Hibernate框架历史简介
Hibernate简单实例——插入操作
ORM的实现目的就是将对象数据保存到数据库中,同时可以将数据库数据读入对象中,这样开发人员就可以将对数据库数据的操作转化为对这些对象的操作。
step1:环境搭建
系统环境:华硕K45VD+win7
开发环境:jdk1.6+myeclipse for Spring 10.6+tomcat 6.x+oracle 11g
开发所需jar包:
hibernate4.1所需jar包及其作用 dom4j-1.6.1.jar
是一个Java的XML API,类似于jdom,用来读写XML文件的 hibernate-commons-annotations-4.0.1.Final.jar
使用javax.persistence下的Annotation可以不依赖Hibernate的JAR包,这样可以切换到其他的ORM框架
hibernate-core-4.1.7.Final.jar
Hibernate核心jar包 hibernate-jpa-2.0-api-1.0.1.Final.jar
对JPA(Java持久化API)规范的支持
javassist-3.15.0-GA.jar
javassist是用来操作字节码的
jboss-logging-3.1.0.GA.jar
使用一个注解处理器来实现你的带注释的接口的具体类
jboss-transaction-api_1.1_spec-1.0.0.Final.jar
事务处理 ojdbc14-10.2.0.1.0.jar
与oracle11g的连接,在oracle11g中可找到
JPA标准:JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中
step2:配置文件
Hibernate的基本配置文件有两种:hibernate.cfg.xml和.hbm.xml文件。前者包含了Hibernate与数据库的基本连接信息,在Hibernate工作的初始阶段,这些信息被先后加载到Configuration和SessionFactory实例;后者包含了Hibernate的基本映射信息,即系统中每一个类与其对应的数据库表之间的关联信息,在Hibernate工作的初始阶段,这些信息通过hibernate.cfg.xml的mapping节点被加载到Configuration和SessionFactory实例。这两种文件信息包含了Hibernate的所有运行期参数。下面我们用详细的例子来说明这两种文件的基本结构和内容。
一、hibernate.cfg.xml文件:<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="connection.username">ddicomp</property> <property name="connection.password">DDICOMP</property> <property name="connection.url"> jdbc:oracle:thin:@192.168.3.90:1521:DDI </property> <property name="dialect">org.hibernate.dialect.OracleDialect</property> <property name="myeclipse.connection.profile">oracle</property> <property name="connection.driver_class"> oracle.jdbc.driver.OracleDriver </property> <property name="show_sql">true</property> <mapping resource="cn/itcast/hibernate/Member.hbm.xml" /> </session-factory> </hibernate-configuration>
二、.hbm.xml文件:
由于Hibernate的关联关系包含了一对一、一对多、多对一和多对多等四种类型,因此,也就有分别与之对应的四种.hbm.xml文件。下面我们就以比较常用的双向“一对多”型关联关系为例,介绍一下.hbm.xml文件的基本结构和内容。有关Hibernate更详细的内容,请参考相关文资料:
http://secyaher.blog.163.com/blog/static/38955772007102814446425/
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!--???? 映射語法 --> <class name="cn.itcast.hibernate.Member" table="MEMBER"> <id name="id" type="java.lang.String"> <column name="ID" precision="20" scale="0" /> <!-- 主鍵自增 --> <generator class="assigned"></generator> </id> <property name="username" type="java.lang.String"> <column name="USERNAME" length="20" not-null="true" /> </property> <property name="password" type="java.lang.String"> <column name="PASSWORD" length="20" not-null="true" /> </property> </class> </hibernate-mapping>
step3:编码
Member.java
<pre name="code" class="java">private String id ;
private String username ;
private String password ;
//省略get和set方法....
MemberOperate.java
package cn.itcast.operate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import cn.itcast.hibernate.Member;
public class MemberOperate {
//所有的操作都是通过Session完成
private Session session = null ;
//在构造方法中实例化Session对象
public MemberOperate() {
//<span style="color:#ff0000;">找到Hibernate配置Configuration </span>
Configuration config = new Configuration().configure() ;
//<span style="color:#ff0000;">从配置中取出SessionFactory </span>
SessionFactory factroy = config.buildSessionFactory() ;
//取出一个Session
this.session = factroy.openSession() ;
}
//向数据库中增加数据
public void insert(Member mem) {
//开始事务
Transaction tran = this.session.beginTransaction() ;
//执行语句
this.session.save(mem) ;
//提交事务
tran.commit() ;
}
}
MemberOperateTest.java(单体测试)
package cn.itcast.test;
import org.junit.Test;
import cn.itcast.hibernate.Member;
import cn.itcast.operate.MemberOperate;
public class MemberOperateTest {
@Test
public void test() {
Member mem = new Member() ;
mem.setId("213121") ;
mem.setUsername("m232c") ;
mem.setPassword("0232") ;
//实例化MemberOperate对象
MemberOperate mo = new MemberOperate() ;
mo.insert(mem) ;
}
}