老司机带你学系列-Hibernate入门到精通
1 数据持久化
1.1 ORM、JPA、Hibernate的关系
ORM是一种思想,对象关系映射。
JPA是制定一套规范,支持ORM。java持久化api。
Hibernate是对JPA接口的实现,以完整实现ORM这种数据持久化的思想。
1.2 配置文件
1、映射文件:***.hbm.xml
a) 类到表的映射。
b) 属性到字段的映射。
c) 对象与记录的映射
范例:Studeng配置文件student.hbm.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="yibai.Student" table="t_student"> <id name="id" column="tid"> <generator class="native"></generator> </id> <property name="name" column="tname"></property> <property name="age" column="tage"></property> <property name="score" column="tscore"></property> </class> </hibernate-mapping> |
实体类:
package yibai; public class Student { public Student(String name, int age, double score) { super(); this.name = name; this.age = age; this.score = score; } public Student() { super(); } private Integer id; private String name; private int age; private double score; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public double getScore() { return score; } public void setScore(double score) { this.score = score; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + ", score=" + score + "]"; } } |
2、主配置文件:hibernate.cfg.xml
a) session-factory,session工厂,取得session的地方,在hibernate里面,所有的增删改查等数据库操作都需要依靠session来完成。
session-factory的配置要点:DB连接四要素;定义注册文件。
范例1:定义主配置文件hibernate.cfg.xml,配置DB连接四要素和定义注册文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- DB连接四要素 --> <property name="hibernate.connection.driver_class"> oracle.jdbc.OracleDriver </property> <property name="hibernate.connection.url"> jdbc:oracle:thin:@190.2.3.150:1521:sms </property> <property name="hibernate.connection.username">lai</property> <property name="hibernate.connection.password">lai</property> <!-- 注册映射文件 --> <mapping resource="yibai/student.hbm.xml"/> </session-factory> </hibernate-configuration> |
范例2:定义主配置文件:注册方言(hibernate.dialect),方言指的是:我们平时写的都是标准的SQL,而不同的dbms不同的数据库管理系统,里边的SQL写起来大体上相同,稍微有些不同,不同的地方就是叫方言。hibernate需要自动生成SQL遇见,需要我们给他指定方言,才能正确的生成SQL。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- DB连接四要素 --> <property name="hibernate.connection.driver_class"> oracle.jdbc.OracleDriver </property> <property name="hibernate.connection.url"> jdbc:oracle:thin:@190.2.3.150:1521:sms </property> <property name="hibernate.connection.username">lai</property> <property name="hibernate.connection.password">lai</property> <!-- 注册映射文件 --> <mapping resource="yibai/student.hbm.xml"/> <!-- 定义方言 ,值可以在core包里面找dialect--> <property name="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect </property> </session-factory> </hibernate-configuration> |
范例3:定义主配置文件,注册C3P0数据库连接池
|
范例4:定义主配置文件,注册上下文
|