第一个hibernate程序
hibernate是一个独立于web的框架,想一下我们使用的数据库如mysql,sqlserver,oracle,这些数据库处理的都是关系模型,我们使用jdbc来把数据存入数据库,java程序使用的是对象模型,数据库使用的是关系模型。这就产生了一个问题,这个问题有个书面名称叫做“阻抗不匹配”,也是用于这些原因之后出现了hibernate,toplink之类的框架。在实际应用中hibernate是使用做多的一个框架,只要学习了这个框架你就可以体会他的独特魅力。
1.下载hibernate开发包,这个包在jboss的网站上http://sourceforge.net/projects/hibernate/files/hibernate3/3.6.7.Final/可以下载到,下载的地方藏得比较隐蔽,注意找就可以了,之后把要用到的包全部拷贝到lib下面,如果不嫌多就全部拷贝进去。
2.找到hibernate的资源文件,里面有我们要用到的一些配置。来看下这个文件的位置
打开之后我们可以看到许多配置信息,这里我选择mysql来做开发,需要的配置如下
把这些配置复制到hibernate的配置文件中就OK了,现在来写下这个配置文件
<!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 name="foo">
<property name="show_sql">true</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///mldn</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<mapping resource="hbm/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
配置文件写好了,现在来写个vo类,如下所示
package org.lxh.vo;
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
这些都弄好了,现在可以写映射文件了,命名规则是xxx.hbm.xml,如下所示
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="org.hibernate.test.annotations">
<class name="org.lxh.vo.User" table="user">
<id name="id" column="id">
<generator class="increment"/>
</id>
<property name="username" column="username"/>
<property name="password" column="password"/>
</class>
</hibernate-mapping>
一切工作都准备就绪了,现在就来写个工具类,之后生成一个表
package org.lxh.util;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
public final class HibernateUtil {
private static SessionFactory sf = null;
private HibernateUtil() {
}
static {
sf = new Configuration().configure().buildSessionFactory();
}
public static SessionFactory getSf() {
return sf;
}
public static Session getSession() {
return sf.openSession();
}
}
最后来写个JUNIT测试一下,看下运行效果。
package test;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.BeforeClass;
import org.lxh.util.HibernateUtil;
import org.lxh.vo.User;
public class Test {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@org.junit.Test public void cascadeBook() {
Session ses=null;
Transaction tr=null;
try{
ses=HibernateUtil.getSession(); //取得session
tr=ses.beginTransaction();
User user=new User();
user.setUsername("chenwill4");
user.setPassword("123456");
ses.save(user); //把数据插入数据库
//ses.persist(user);
tr.commit();
}catch(HibernateException e){
throw e;
}finally{
if(ses!=null)
{
ses.close();
}
}
}
}
上一篇: MapReduce的GroupComparator
下一篇: java8新特性-Lambda表达式