最近在打算搞定SSH,所以一样一样来,今天是Hibernate
首先下载Hibernate最新版,地址:http://sourceforge.net/projects/hibernate/files/hibernate3/
首先hibernate3.jar是一定要的
required文件夹下面的jar包是全部需要的(其中的每个包我都到官方网站上找了最新版来,以slf4j包最特殊,hibernate自带的slf4j的版本是1.6.1,我在官方网站上下到的1.6.1版本是将其中的各个组件分为不同jar包发布的,因此,这里需要引用slf4j-api-1.6.1.jar和slf4j-nop-1.6.1.jar两个jar包)
另外3.6需要jpa包的支持,所以要到JPA文件夹下面把hibernate-jpa-2.0-api-1.0.0.Final.jar拿过来
最后就是数据库连接驱动,我这里使用的是mysql数据库,因此驱动程序包mysql-connector-java-5.1.15-bin.jar也是必不可少的
今天和上次一样,追求最少包处理,下面是运行hibernate入门程序所需要的最少包列表:
同样的,下面附有各个非hibernate官方包的官方下载地址:
Antlr: http://www.antlr.org/download.html
Common-collections: http://commons.apache.org/collections/download_collections.cgi
Dom4j: http://sourceforge.net/projects/dom4j/files/dom4j/
Javassist: http://sourceforge.net/projects/jboss/files/Javassist/
Jta: http://java.sun.com/products/jta/
Slf4j: http://www.slf4j.org/download.html
Mysql-driver: http://dev.mysql.com/downloads/connector/j/
终于可以开始正式编程了,首先使用hibernate至少要有一个数据库一个数据表一条数据记录吧,数据库建立工作开始,我建立了一个名字叫hibernatedemo的数据库,添加了一个叫做user的数据表,数据表结构如下:
DROP TABLE IF EXISTS `hibernatedemo`.`user`;
CREATE TABLE `hibernatedemo`.`user` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`NAME` varchar(45) NOT NULL,
`PASSWORD` varchar(45) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
一共就三列,一列ID,一列用户名name,一列密码password,然后手动插入一条记录:张三; zhangsan.
由于只是入门程序,所以不事先增删改功能,手工插入一条记录,只要能显示出来就行了
对应的,有数据表相关联的JavaBean类,定义如下:
package com.iteye.twincle.HibernateDemo.main;
public class User {
long id;
String name;
String password;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
没什么特别的,三个属性,三对get和set方法。
数据表有了,javabean有了,下面需要建立对应关系,也就是建立User.hbm.xml文件,这是约定俗成的名字:"类名.hbm.xml",hbm是hibernate-mapping的缩写,当然也可以叫其他名,只不过这样叫可读性好。
<?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="com.iteye.twincle.HibernateDemo.main.User" table="user">
<!-- 配置主键信息 -->
<id name="id" column="ID" type="long">
<generator class="native" />
</id>
<!-- 配置属性信息,默认type为string类型,所以不需要配置 -->
<property name="name" column="NAME" not-null="true" />
<property name="password" column="PASSWORD" not-null="true" />
</class>
</hibernate-mapping>
对应关系也是很清晰的,一个字段对应一个属性
数据库建立好之后,需要配置hibernate与数据库交互的配置文件,也就是hibernate配置文件
<?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.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库属性配置 -->
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hibernatedemo</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">welcome</property>
<!-- 后台打印执行的SQL语句 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!-- 映射文件配置 -->
<mapping resource="com/iteye/twincle/HibernateDemo/config/mysql/User.hbm.xml" />
</session-factory>
</hibernate-configuration>
这个文件应该放在src的根目录下,以便读取,当然放在别的地方也是可以的,这里的配置都是取的最简模式,其中后台打印执行的SQL语句的配置可以不要,但是这样配置方便一会查看输出内容。
终于完成了基本的配置,可以开始使用Hibernate处理事务了,编写一个处理事务的类,这里叫做UserService
package com.iteye.twincle.HibernateDemo.main;
import java.util.ArrayList;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class UserService {
public static SessionFactory sessionFactory;
//初始化sessionFactory,创建实例
static {
try {
//从默认位置读取hibernate.cfg.xml
Configuration config = new Configuration().configure();
sessionFactory = config.buildSessionFactory();
} catch (RuntimeException e) {
e.printStackTrace();
throw e;
}
}
public void printAllUser() {
Session session = sessionFactory.openSession();
Transaction tx = null;
ArrayList<User> userList = new ArrayList<User>();
try {
tx = session.beginTransaction();
Query query = session.createQuery("from User as u order by u.name asc");
userList = (ArrayList<User>)query.list();
tx.commit();
for (int i = 0; i < userList.size(); i ++) {
System.out.println(userList.get(i).getName() + ": " + userList.get(i).getPassword());
}
} catch (Exception e) {
System.out.println(e.toString());
} finally {
session.close();
}
}
}
主要功能就是读取配置文件,建立连接,读取user表中的记录并打印出来。
最后测试类UserMain,只是执行以下service中的方法
package com.iteye.twincle.HibernateDemo.main;
public class UserMain {
public static void main (String[] args) {
UserService userServ = new UserService();
userServ.printAllUser();
}
}
运行测试即可看到以下输出结果
Hibernate:
select
user0_.ID as ID0_,
user0_.NAME as NAME0_,
user0_.PASSWORD as PASSWORD0_
from
user user0_
order by
user0_.NAME asc
张三: zhangsan
除最后一行外,是hibernate执行查询时的语句,最后一行是输出结果,各位可以在数据库中多插入几条数据看一下结果。所有源代码可以在下面下载,导入eclipse就可以直接运行了。
总之我认为hibernate还是比spring容易掌握的,但是需要提前有一些数据库、SQL基础,而spring要有很好的接口、注解、工厂模式、IOC思想等基础。
不过听说hibernate管理数据库连接还不是很好,可以选择c3p0或者proxool来管理数据库连接,下一个目标:hibernate和proxool整合!
分享到:
相关推荐
综上所述,Hibernate 3.6.3 中文 API 提供了一个强大而灵活的框架,用于简化 Java 应用程序与关系型数据库之间的交互。通过深入理解这些核心概念和技术细节,开发人员能够更加高效地利用 Hibernate 构建高性能的企业...
Hibernate.3.6.3.chm是根据hibernate-distribution-3.6.3.Final中的javadocs,使用chm文档生成工具 生成的chm格式的帮助文档
最新Hibernate 3.6.3 API
SiteServer CMS 3.6.3版本,爆破,将BaiRong.Core.dll文件直接替换到bin目录即可,CMS测试通过,其他未测试,理论上都没有问题。仅用于测试,不可用于商业用途。
apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-maven-3.6.3-bin。apache-...
maven资源包3.6.3
**Apache Maven 3.6.3 深度解析** Apache Maven 是一个强大的项目管理和构建工具,广泛应用于Java开发领域。Maven通过提供一个标准化的项目对象模型(Project Object Model,POM)以及一套插件,使得构建、依赖管理...
Apache ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给...
maven-3.6.3 官方直下,无任何修改与添加,下载后解压即可用。maven-3.6.3 官方直下,无任何修改与添加,下载后解压即可用。maven-3.6.3 官方直下,无任何修改与添加,下载后解压即可用。maven-3.6.3 官方直下,无...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。它基于项目对象模型(Project Object Model,POM)的概念,能够自动化构建过程,管理依赖关系,并提供了一套标准的项目结构和生命周期。...
《代码统计工具LineCount3.6.3深度解析》 在软件开发过程中,代码统计是一项不可或缺的任务,它有助于我们理解代码的规模、复杂性以及维护性。LineCount3.6.3是一款简单易用的代码统计工具,尤其适用于开发者和项目...
总之,Python3.6.3的64位zip解压版包含了运行Python环境所需的所有关键组件,使得开发者能够在没有安装完整安装包的情况下直接运行Python程序。这个版本支持最新的语法特性,比如f-string、async/await等,并且在...
**Firefox Setup 3.6.3.exe** 这个文件是Firefox 3.6.3的安装程序,用户可以通过运行这个.exe文件来在Windows操作系统上安装Firefox浏览器。安装过程中,程序会自动处理所有必要的步骤,包括下载必要的组件、配置...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。Maven 3.6.3是该工具的一个稳定版本,提供了许多改进和优化,旨在提高开发者的工作效率和项目的可维护性。 Maven的核心概念是基于项目...
Maven 3.6.3是Apache Maven项目的一个重要版本,它是一个强大的构建工具,专为Java开发人员设计,用于管理和构建Java应用程序。通过Maven,开发者可以轻松管理项目的依赖关系、构建过程以及发布流程,极大地提高了...
Apache Maven 是一个强大的项目管理和构建工具,主要用于Java应用程序的开发。Maven 3.6.3是该工具的一个稳定版本,提供了许多改进和优化,旨在提高开发者的工作效率和项目的可维护性。在这个“apache-maven-3.6.3-...
Maven 3.6.3是该工具的一个稳定版本,提供了许多改进和修复,使得开发者能够更高效地管理他们的Java项目。 ** Maven 的核心概念 ** 1. **项目对象模型(Project Object Model, POM)**:POM是Maven项目的核心,...
apache-maven-3.6.3全部版本的下载文件: apache-maven-3.6.3-bin.tar.gz; apache-maven-3.6.3-bin.zip; apache-maven-3.6.3-src.tar.gz; apache-maven-3.6.3-src.zip;
Wireshark3.6.3Intel64.dmg