JPA,java persistance api,java持久层接口,即与
数据库打交道的一些接口。实现交给各个厂商去实现。
ORM,Object/Relation Mapping,对象/关系数据库映射。面向对象的数据库操作,底层仍是sql语句。
获得
hibernate的maven依赖。
org.hibernate
hibernate-core
4.3.10.Final
mysql
mysql-connector-java
5.1.31
Hibernate是一个优秀的ORM实现。使用方法见下。
配置文件
名为hibernate.cfg.xml,一般放在src目录下。它使用c3p0作为数据库连接池。
com.mysql.jdbc.Driver
jdbc:mysql://me.likeyichu.com:3306/AliyunDB
true
utf-8
root
密码
20
1
5000
100
3000
true
2
true
org.hibernate.dialect.MySQLDialect
常用类
@ javax.persistence.Entity
表明这个类对应着数据库中某张表中的实体。
@javax.persistence.Table
该注解的name属性标明java类与哪张表相对应。
@javax.persistence.Id
标明这个字段是数据库表中的主键。
@javax.persistence.Column
该注解的name属性指定该字段与表中的哪一列相对应。默认是同名的相互匹配。
@javax.persistence.Temporal
数据库中时间类型比较多,赋值为TemporalType.TIMESTAMP表示时间戳。
@javax.persistence.Transient
当某个pojo的字段不在表中的时候,可以加上这个注释,避免错误。
HQL
org.hibernate.SharedSessionContract.createQuery(String queryString)
用给定的hql语句创建一个query。
List org.hibernate.Query.list()
将查询结果以list的形式返回。
代码示例
package com.likeyichu.webservice.resource.me;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
@Entity
@Table( name = "studentTable")
public class Student {
@Id
int id;
String name;
boolean isGirl;
@Column(name="time_stamp")
@Temporal(TemporalType.TIMESTAMP)
Date timestamp;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getTimeStamp() {
return timestamp;
}
public void setTimeStamp(Date timeStamp) {
this.timestamp = timeStamp;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isGirl() {
return isGirl;
}
public void setGirl(boolean isGirl) {
this.isGirl = isGirl;
}
public static void main(String[] args) {
//加载src/hibernate.cfg.xml作为配置
Configuration conf=new Configuration().configure();
//so long,annoying
ServiceRegistry serviceRegistry=new ServiceRegistryBuilder().applySettings(conf.getProperties()).buildServiceRegistry();
SessionFactory sf=conf.buildSessionFactory(serviceRegistry);
Session sess=sf.openSession();
Transaction ts=sess.beginTransaction();
Student student=new Student();
student.setName("qiqi");
//添加一行数据
sess.save(student);
ts.commit();
//获得所有女同学,组装成一个list。
@SuppressWarnings("unchecked")
List list=sess.createQuery("from Student where isGirl=true").list();
System.out.println(list);
sess.close();
sf.close();
}
}
?