Hibernate入门体验

在java项目开发中,对于DAO层的持久化框架非常的多,流行的Hibernate,Tooplink,OJB等等。Hibernate是一个全自动化的持久行框架,功能非常强大。要想用Hibernate进行开发,首先必须下载其jar包,这里用的是hibernate-3.2.5版本的。

开发步骤如下:

1.新建一个java项目,项目名称为hibernateTest,在项目下新建一个lib文件夹,并将下载的jar包中lib文件夹中的所以jar包拷贝到新建的lib文件夹中,然后将拷贝jar包添加到项目中,同时不要忘记需要数据库驱动的jar包。

2.在src目录下新建一个hibernate.cfg.xml的xml文件。该配置文件配置了很多Hibernate框架工作必须的信息。包括数库连接信息,连接池,映射文件等等

<!--hibernate.hbm2ddl.auto 当数据库中没有表时,创建表 取值除了create之外,还有create-drop,update,validate等-->

<!--dialect 配置方言 不同的数据库都存在一定的差异 通过该配置项 Hibernate会针对不同的数据库多相应操作 这里的数据库为oracle数据库-->

<!--show_sql 该配置用来控制是否显示Hibernate执行的sql语句 true为显示sql语句-->

<!--mapping 指定关系映射文件的位置-->

<?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.driver_class">oracle.jdbc.driver.OracleDriver</property> 
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property> 
        <property name="connection.username">scott</property> 
        <property name="connection.password">tiger</property>
               <property name="hibernate.hbm2ddl.auto">create</property>
               <property name="dialect">org.hibernate.dialect.OracleDialect</property>
        <property name="show_sql">true</property>  
       <mapping resource="com/hotmail/silence/domain/Person.hbm.xml"/>
     </session-factory> 
</hibernate-configuration>

2.建立实体,在src下新建一个com.hotmail.silence.domain的包 ,在该包中建立一个Person类。

       注意:(1). Person类就是一个标准的javaBean。也就是说,要有字段和相应的的getter和setter方法。

                  (2).有一个id属性。

                  (3).必须要用一个无参数构造方法。

代码如下:

package com.hotmail.silence.domain;

public class Person {
 //实体类中一般都有一个id属性 用来做主键
 private int id;
 private String name;
 private int age;
 private IdCard idCard;
public int getId() {
	return id;
}
public void setId(int id) {
	this.id = id;
}
public IdCard getIdCard() {
	return idCard;
}
public void setIdCard(IdCard idCard) {
	this.idCard = idCard;
}
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;
}
 
}

3.建立映射文件,在Person类的同一目录下,新建一个Person.hbm.xml文件

<?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'>
<!--package属性用来指定包名,-->
<hibernate-mapping package="com.hotmail.silence.domain">
   <!--name属性用来指定类名称 要和类名一致。table属性用来指定映射生成的表名称 默认和类名称一致-->
    <class name="Person" table="person">
 
     <!--对应Person类的id属性,在表中生成id字段 Hibernate框架中有一个native类(采用自增长)会自动给id赋值-->
        <id name="id">
            <generator class="native"/>
        </id>
                <!--对应Person类的name属性 在表中会生成name字段-->
		<property name="name"></property>
		<property name="age"></property>
    </class>
</hibernate-mapping>
  在hibernate.cfg.xml文件中加入 <mapping resource="com/hotmail/silence/domain/Person.hbm.xml"/> 参见hibernate.cfg.xml文件
 

4.新建一个含有main方法的测试类。进行测试。

  在src目录下新建一个com.hotmail.silence.test包并新建一个Test1类。

 代码如下:

package com.hotmail.silence.test;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.hotmail.silence.domain.Person;

public class Test1 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
               try{
 		    SessionFactory sf = new Configuration().configure().buildSessionFactory();  
                    Session session = sf.openSession();
             org.hibernate.Transaction transaction  = session.beginTransaction();
        	      Person p = new Person();
			p.setName("name");
			p.setAge(10);
			session.save(p);
		        transaction.commit();			
		} catch (Exception e) {
			transaction.rollback();
			e.printStackTrace();
		}finally{
                       if(session != null)
			session.close();
			
		}
		
	}
	
}

运行Test1 会输出:

Hibernate: create sequence hibernate_sequence
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into tbl_person (name, age, id) values (?, ?, ?)
 
进入数据库 执行select * from person
即可查询出数据。


 


Hibernate: create sequence hibernate_sequence
2014-10-14 18:12:48 org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000230: Schema export complete
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into tbl_person (name, age, id) values (?, ?, ?)


Hibernate: create sequence hibernate_sequence
2014-10-14 18:12:48 org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000230: Schema export complete
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into tbl_person (name, age, id) values (?, ?, ?)Hibernate: create sequence hibernate_sequence
2014-10-14 18:12:48 org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000230: Schema export complete
Hibernate: select hibernate_sequence.nextval from dual
Hibernate: insert into tbl_person (name, age, id) values (?, ?, ?)



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值