ORM进阶之Hibernate 简介及框架搭

来源:互联网 发布:网络攻防技术吴灏pdf 编辑:程序博客网 时间:2024/06/13 13:27

       上一篇博客讲解了ORM思想,以及ORM的优缺点,并说了ORM有很多的实现方式,我们将以Hibernate为基础来进行讲解。

        Hibernate是一个基于元数据的轻量级的ORM框架:

       1,元数据(Meta Data):data about data(数据的数据),也就是说描述一个对象数据,相当于这个对象的上下文环境。

       2,轻量级:占用资源少,没有侵入性。(其实我认为这只是相对而言,如果和Ibatis相比,它到成重量级的了)。

         Hibernate分装了对数据库的操作,让我们由面向数据库编程,变为面向对象编程,这样就可以让我们把更多的精力放在项目的业务逻辑上,而不是关注数据库的操作!


         这篇博客为大家说一下如何从无到有的搭建一个Hibernate框架!

1. 准备

        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数据库一个!

2. 搭建

         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类,如上图所示!

  

3.  写代码

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>

4. 测试

        a) Hibernate能自动创建的数据库表, 不能创建数据库,所以我们要先自己创建一个HibernateTest数据库。创建过程就不说了,这个是mysql 的知识了,不会的话自己可以去补一下。很常用的数据库。

        b) 我们看一下HibernateTest 数据库中有没有表!

        

       在客户端上右击, 选择 Run as ---》Java  Application。

       

        然后在Console控制台会输出如下信息

        

       我们在去数据库中进行查询,发现表已经建立好了,数据插入到数据库中了。

       

        到这里说明我们的框架已经搭建好了!

1 0
原创粉丝点击