上一篇博客讲解了ORM思想,以及ORM的优缺点,并说了ORM有很多的实现方式,我们将以Hibernate为基础来进行讲解。
Hibernate是一个基于元数据的轻量级的ORM框架:
1,元数据(Meta Data):data about data(数据的数据),也就是说描述一个对象数据,相当于这个对象的上下文环境。
2,轻量级:占用资源少,没有侵入性。(其实我认为这只是相对而言,如果和Ibatis相比,它到成重量级的了)。
Hibernate分装了对数据库的操作,让我们由面向数据库编程,变为面向对象编程,这样就可以让我们把更多的精力放在项目的业务逻辑上,而不是关注数据库的操作!
这篇博客为大家说一下如何从无到有的搭建一个Hibernate框架!
a) Java开发工具,eclipse ,myeclipse ,netBean 本文以myeclipse为例!
b) Jar包, hibernate 需要的jar,连接mysql 需要的jar
antlr-2.7.6.jar(生成SQL语句)
asm.jar(字节码增强工具类)
c3p0-0.9.1.jar(数据源连接池组件)
cglib-2.1.3.jar(代理组件,基于继承的)
commons-collections-2.1.1.jar(集合工具类组件,会进行高效的操作)
commons-logging-1.0.4.jar(日志输出的转换组件)
log4j-1.2.11.jar(日志输出组件,更加详细和可以控制输出格式,及目的地)
dom4j-1.6.1.jar(XML解析)
ehcache-1.2.3.jar(缓存组件)
ejb3-persistence.jar(持久化操作的规范jar包)
hibernate3.jar(框架的核心jar包)
jta.jar(全局的事务管理)
junit-3.8.1.jar (单元测试)
mysql-connector-java-3.1.13-bin.jar (MySQL数据库驱动jar包)
c) Mysql数据库一个!
a) 首先新建一个java project这里命名为Hibernate
b) 在Hibernate项目上右键 选择 Build Path-à Configure Build Path
c) 出现如下界面,选择Add JARs ,添加需要的jar包。然后OK.
d) 在src下建立两个包,分别为com.tgb.domain和com.tgb.service添加一个名字为Hibernate.cfg.xml ,这个文件最好去网上下载一个,省的自己写写错。目录结构如下图所示。
e) 然后在com.tgb.domain下建立User类和User.hbm.xml文件,在com.tgb.service 下建立Client类和UserService类,如上图所示!
a) User类代码如下
package com.tgb.domain; /** * User实体 * @author hongjie * */ public class User { //主键 private int id; //用户名 private String username; //密码 private String passwords; 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 getPasswords() { return passwords; } public void setPasswords(String passwords) { this.passwords = passwords; } }
b) User.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"> <!-- package 对应实体所在包 --> <hibernate-mapping package="com.tgb.domain"> <!-- table 为映射到数据库中的表名 , 默认与实体名一致 --> <class name="User" table="t_users" > <id name="id" type="java.lang.Integer"> <generator class="native"/> </id> <property name="username"/> <property name="passwords"/> </class> </hibernate-mapping>
c) Client|.java 的代码如下
package com.tgb.service; public class Client { /** * @param args */ public static void main(String[] args) { //创建一个服务的实例 UserService userService = new UserService(); //调用添加的方法 userService.add(); } }
d) UserService.java 的代码如下
package com.tgb.service; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import com.tgb.domain.User; public class UserService { public void add() { //创建一个 Configuration Configuration cfg = new Configuration().configure(); //创建SessionFactory SessionFactory factory = cfg.buildSessionFactory(); Session session = factory.openSession(); //开启事务 System.out.println("开启事务"); Transaction tran = session.beginTransaction(); User user = new User(); user.setUsername("zhanghongjie"); user.setPasswords("zhanghongjie"); //保存 session.save(user); System.out.println("保存到数据库中"); //提交事务。 保存到数据库中 tran.commit(); session.close(); } }
e) Hibernate.cfg.xml 的代码如下
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!--mysql 的驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- 链接数据库的字符串,HibernateTest为数据库名 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/HibernateTest</property> <!-- 用户名 和密码 --> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 方言,链接那个数据库, 用那个数据库的方言。 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 是否在控制台显示sql 语句, 一般设置为true 便于调试 --> <property name="hibernate.show_sql">true</property> <!-- 当第一次使用实体的时候,会自动在数据库中插入数据 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 对应所有的实体的xml文件。 --> <mapping resource="com/tgb/domain/User.hbm.xml"/> </session-factory> </hibernate-configuration>
a) Hibernate能自动创建的数据库表, 不能创建数据库,所以我们要先自己创建一个HibernateTest数据库。创建过程就不说了,这个是mysql 的知识了,不会的话自己可以去补一下。很常用的数据库。
b) 我们看一下HibernateTest 数据库中有没有表!
在客户端上右击, 选择 Run as ---》Java Application。
然后在Console控制台会输出如下信息
我们在去数据库中进行查询,发现表已经建立好了,数据插入到数据库中了。
到这里说明我们的框架已经搭建好了!
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/zhanghongjie0302/article/details/47450629