Hibernate开发教程(2):准备开始

使用Hibernate开发应用,一种方法是下载Hibernate相关的jar文件,然后再项目在添加引用。由于Hibernate涉及的库比较多,这种方法比较麻烦,因此本教程使用Maven来管理项目。关于Maven的简单教程可以参见:

  1. Maven 使用指南(1): 概述
  2. Maven 使用指南(2): 第一个例子Hello World
  3. Maven 使用指南(3): 简述Maven工作过程
  4. Maven 使用指南(4): Maven Build 的阶段
  5. Maven 使用指南(5): Maven 自动依赖管理
  6. Maven 使用指南(6): 使用Maven插件
  7. Maven 使用指南(7): 使用Maven打包资源文件
  8. Maven 使用指南(8): 使用Maven管理多个项目

此外教程采用MySql 数据库为例,如果你使用Windows操作系统,可以安装WAMP系统(包括MySQL,Apache ,PHP等)也可以只安装MySQL。 Hibernate 使用其它数据库的方法大同小异。

管理MySQL的免费前端管理工具为HeidiSQL,你也可以使用命令行或是其它工具。

开始使用的示例数据库为Sales 数据库,可以参见Vaadin Web应用开发教程(46): 开始使用SQLContainer 。或是本地下载Sales.sql.

此外为方便起见 使用 Maven-Hibernate3插件,可以直接从数据库生成 映射文件和Java类代码。具体使用可以参见 Mojo。

开发环境使用Eclipse 或是 SpringSouce tool Suite (STS),这些都可以从网上免费下载。

首先创建一个Maven项目 HibernateTutorial.

修改pom.xml 添加于Hibernate相关的引用:

<dependencies>
	<dependency>
		<groupId>org.hibernate</groupId>
		<artifactId>hibernate-core</artifactId>
		<version>4.1.6.Final</version>
	</dependency>

	<!-- Hibernate uses jboss-logging for logging, for the tutorials we will
		use the sl4fj-simple backend -->
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-simple</artifactId>
		<version>1.6.1</version>
	</dependency>

	<!-- The tutorials use JUnit test cases to illustrate usage -->
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.10</version>
	</dependency>

	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.0.8</version>
	</dependency>
</dependencies>
使用Maven-Hibernate 的 hbm2java (自动生成Java代码),hbm2hbmxml (自动生成.hbm.xml 映射文件) 和 hbm2cfgxml (自动生成最终的hibernate.cfg.xml文件)

<plugin>
	<groupId>org.codehaus.mojo</groupId>
	<artifactId>hibernate3-maven-plugin</artifactId>
	<version>2.2</version>
	<configuration>
		<components>
			<component>
				<name>hbm2java</name>
				<outputDirectory>src/main/java/</outputDirectory>
				<implementation>jdbcconfiguration</implementation>
			</component>

			<component>
				<name>hbm2hbmxml</name>
				<outputDirectory>src/main/resources/</outputDirectory>
			</component>

			<component>
				<name>hbm2cfgxml</name>
				<outputDirectory>src/main/resources/</outputDirectory>
				<implementation>jdbcconfiguration</implementation>
			</component>
		</components>

		<componentProperties>
			<drop>true</drop>

			<configurationfile>/src/main/resources/hibernate.cfg.xml</configurationfile>
			<packagename>com.pstreets.hibernate.demo.data</packagename>
		</componentProperties>
	</configuration>
	<dependencies>
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.0.8</version>
		</dependency>

	</dependencies>
</plugin>

其中hbm2java 通过 outputDirectory参数指明创建的Java代码的目录,hbm2hbmxml通过outputDirectory参数指明创建的映射文件的目录,本例使用缺省的资源目录src/main/resources ,因为我们使用MySQL plugin也添加了对mysql 的依赖。

hibernate.cfg.xml 为Hibernate的配置文件,本例使用如下配置来连接Mysql数据库的Sales数据库

<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">password</property>
<property name="hibernate.connection.pool_size">1</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/Sales</property>
<property name="hibernate.connection.username">username</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>

在命令行运行 mvn hibernate3:hbm2java hibernate3:hbm2cfgxml hibernate3:hbm2hbmxml 自动生成java代码,.hbm.xml 映射文件及配置文件hibernate.cfg.xml。

到此时我们还没有写过一行代码。

下面我们就使用Hibernate 来读取Sales数据库的Customer表,并显示所有Customer的FirstName 和Last Name,代码如下

SessionFactory sessionFactory;
sessionFactory = new Configuration().configure().buildSessionFactory();

// create a couple of events...
Session session = sessionFactory.openSession();
session.beginTransaction();

List result = session.createQuery( "from Customer" ).list();
for ( Customer customer : (List<Customer>) result ) {
	System.out.println( "Customer: " + customer.getFirstName()
	 + " " + customer.getLastName() );
}
session.getTransaction().commit();
session.close();

if (sessionFactory != null) {
	sessionFactory.close();
}
这里先不解释,但可以看出没有任何的SQL语句,就将Customer表的记录写到result 这个List对象中。结果如下:

Customer: Laura Steel
Customer: Susanne King
Customer: Anne Miller
Customer: Michael Clancy
Customer: Sylvia Ringer
Customer: Laura Miller
Customer: Laura White
Customer: James Peterson
Customer: Andrew Miller
Customer: James Schneider
Customer: Anne Fuller
Customer: Julia White
Customer: George Ott
Customer: Laura Ringer
Customer: Bill Karsen
Customer: Bill Clancy
Customer: John Fuller
Customer: Laura Ott
Customer: Sylvia Fuller
Customer: Susanne Heiniger
Customer: Janet Schneider
Customer: Julia Clancy
Customer: Bill Ott
Customer: Julia Heiniger
Customer: James Sommer
Customer: Sylvia Steel
Customer: James Clancy
Customer: Bob Sommer
Customer: Susanne White
Customer: Andrew Smith
Customer: Bill Sommer
Customer: Bob Ringer
Customer: Michael Ott
Customer: Mary King
Customer: Julia May
Customer: George Karsen
Customer: John Steel
Customer: Michael Clancy
Customer: Andrew Heiniger
Customer: Mary Karsen
Customer: Susanne Miller
Customer: Bill King
Customer: Robert Ott
Customer: Susanne Smith
Customer: Sylvia Ott
Customer: Janet May
Customer: Andrew May
Customer: Janet Fuller
Customer: Robert White
Customer: George Fuller
可以 下载 本例做为后续教程的基础。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值