Hibernate学习笔记1:第一个Hibernate程序

最近在学习hibernate框架,所有例子开发所使用的IDE为eclipse,数据库为mysql 5.5,为了方便创建hibernate的配置文件,可以在eclipse上安装hibernate tools,步骤为:Help-->Eclipse Marketplace,输入hibernate进行搜索,找到Hibernate Tools,然后点击安装即可。安装好之后重启eclipse,就可以在File-->New-->Other...下面找到Hibernate相关的了。

然后去hibernate官网下载hibernate压缩包,我所使用的版本为hibernate-release-4.2.7.final,这样准备工作就基本上是完成了。

首先建立数据库。新建一个名字为test的schema,在其中建一张student的表,sql语句如下:

CREATE TABLE `student` (
  `stuID` varchar(20) NOT NULL,
  `stuName` varchar(20) NOT NULL,
  PRIMARY KEY (`stuID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

然后新建一个project,导入相关的jar包,具体包括:mysql的connctor,以及hibernate压缩包内lib/required/下的所有jar包。然后再src目录下建立hibernate的配置文件,即hibernate.cfg.xml,因为安装了Hibernate Tools,因此可以File-->New-->Other...-->Hibernate configuration File(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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">password</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
		<property name="hibernate.show_sql">true</property>
		<mapping resource="test/Student.hbm.xml"/>
	</session-factory>
</hibernate-configuration>
driver_class、url、username和password是必不可少的,dialect制定了方言种类,由于不同的数据库对于SQL的实现有所不同,因此hibernate针对大多数主流的数据库提供了方言,show_sql为true表示要在控制台上打印出sql语句。至于mapping,是之后加上去的,稍后将做解释。

现在hibernate的数据库连接已经配置好了,然后我们创建java实体类,新建一个名字为test的包,创建一个Student类,代码如下:

package test;

public class Student {
	private String stuID;
	private String stuName;

	public Student() {

	}

	public String getStuID() {
		return stuID;
	}

	public void setStuID(String stuID) {
		this.stuID = stuID;
	}

	public String getStuName() {
		return stuName;
	}

	public void setStuName(String stuName) {
		this.stuName = stuName;
	}

}
然后再test包下创建一个Student.hbm.xml的配置文件,具体内容如下:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 2013-11-26 21:37:44 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
	<class name="test.Student" table="student">
		<id name="stuID" type="java.lang.String">
			<column name="stuID" />
			<generator class="assigned" />
		</id>
		<property name="stuName" type="java.lang.String">
			<column name="stuName" />
		</property>
	</class>
</hibernate-mapping>
到现在就可以理解hibernate.cfg.xml里的mapping的来历了。Student.hbm.xml指定了test.Student类与数据库中的student表进行映射,其中id制定了逐渐,name为java实体类的属性,column为对应的表的字段。

到此为止,所有的准备工作都做好了,下面我们开始写一个测试类,代码如下:

package test;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;

public class Test {
	public static void main(String[] args) {
		try {
			//load configuration file, the default is hibernate.cfg.xml
			Configuration configuration = new Configuration();
			configuration.configure();
			ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties())
					.buildServiceRegistry();
			//get session factory
			SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
			//open a session
			Session session=sessionFactory.openSession();
			
			//build an entity
			Student student=new Student();
			student.setStuID("100000");
			student.setStuName("张三");
			
			session.beginTransaction();
			session.save(student);
			session.getTransaction().commit();
			session.close();

		} catch (HibernateException e) {
			e.printStackTrace();
		}
	}

}
在Hibernate4之前的版本中,SessionFactory的获取是:

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
但是在hibernate4中该方法已经被废弃。然后我们执行该类,即可在数据库中插入一条新的记录。注意在commit的时候将student持久化。操作完成后要将session关闭。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值