老司机带你学系列-Hibernate入门到精通-1

来源:互联网 发布:阿里云服务器增加磁盘 编辑:程序博客网 时间:2024/05/19 06:17

老司机带你学系列-Hibernate入门到精通

 


 

数据持久化

1.1 ORMJPAHibernate的关系

ORM是一种思想,对象关系映射。

JPA是制定一套规范,支持ORMjava持久化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(Stringname, 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(Integerid) {

this.id =id;

}

public String getName() {

return name;

}

public void setName(Stringname) {

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定义主配置文件,注册上下文