mike zeseler

张绍林

 

Hibernate入门

自己学软件编程不久,在学习中总结和记录啦一些学习的入门知识!有不足之处,请批评指正。

   

Hibernate入门指南

                                          Mike zeseler

Hibernate5个核心接口:

Session 

SessionFactory

Transaction

Query 

Configuration

对象“持久化”狭义理解:是把域对象永久保存到数据库中。

持久化和数据库相关的各项操作:

保存:把域对象永久保存到数据库中

更新:更新数据库中域对象发的状态。

删除: 从数据库中删除一个域对象。

加载:根据特定的oid(对象标示符)把一个域对象从数据库加载到内存中。

查询:根据特定的查询条件,把符合查询条件的一个或多个域对象从数据库加载到内存中。

一:新建项目web java项目都可以

New——》project——》webproject——》T_user

截图如:
 

为项目添加hibernateCapabilitise截图如


点击next-à如图:

 

点击--ànext如图:这一步需要详细的配置:

 

一:一般我们需要选择mysql数据库截图:


 

这里的配置需要给大家详细的说下:具体情况操作完后慢慢详细讲解:myeclipse Database Explorer的使用:

 

Java 前面有个窗口带+号的标示,点击下就可以出现一个下拉菜单;看看有没有Database Explorer这项,没有的话点击other进行下一步:

出现一个选框:我们选择Database Explore这项:


 

点击ok 完成。

Database Explore的界面截图:


 

我们来连接一个数据库。Myeclipse Derby myeclipse自带的一个数据库,它比mysql支持更好的事物(trasaction)。

 

右击鼠标 new一个 newDatabase Connection Driver


 

这里需要天相关的配置:

Driver template 选择你装好的数据库名称:我以mysql为例:

Driver name mysql55 随你的意思取就ok

Connection urljdbc:mysql://<hostname>[<:3306>]/<dbname>

我用的是mysql5则是:jdbcmysql//localhost3306/test.

(连接数据库用户名)usernameroot

Password   我的密码为空();

Driver jars 驱动类,不同的数据库有不同的jar包,我用的是mysqljar包。

点击Save passwordConnection to database on我们不需要理会,配置好的的截图:


 

点击next—》点击finish ok完成,以上就是Database ExploreEasy吧。^_^

点击next—》下一步截图:

 

去掉create SessionFactory class 点击finish完成。

完成后的截图

 

一般的hibernate.cfg.xml配置文件:

<?xml version="1.0" encoding="gbk"?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN"    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  

<hibernate-configuration>    

<session-factory>

<!—显示实际操作数据库时的sql(这里是mysql数据库) --> 

<property name="show_sql">true</property>    

<!—将显示的sql排版,方便观看--> 

<property name="format_sql">true</property>  

<!—sql方言,这里设定的是mysql -->

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>  

<!—JDBC驱动类--> 

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<!-- JDBC URL -->  

<property name="connection.url">jdbc:mysql://localhost/demo</property>   

<!—连接数据库用户名 -->    

<property name="connection.username">root</property> 

<!—数据库密码(我的数据库密码为空) --> 

<property name="connection.password"></property> 

<!—下面的是数据库要映射的文件-->    

</session-factory>

</hibernate-configuration>

 

建表:建表语句

Create table T_user(

id bigint not null auto_increment,

name varchar(255),

age bigint,

primary key(id)

)engine=myisam default charset=gbk//支持中文防止插入数据出现乱码

 

Hibernate.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">

<!-- Generated by MyEclipse Hibernate Tools.                   -->

<hibernate-configuration>

    <session-factory>

         <!-- 连接数据可的用户名 -->

       <property name="connection.username">root</property>

        <!-- jdbc url -->

       <property name="connection.url">

           jdbc:mysql://localhost:3306/test

       </property>

        <!-- 数据库方言sql方言)-->

       <property name="dialect">

           org.hibernate.dialect.MySQLDialect

       </property>

        <!-- 连接数据库的名字-->

       <property name="myeclipse.connection.profile">mysql5</property>

        <!-- 接数据驱动类-->

       <property name="connection.driver_class">

           com.mysql.jdbc.Driver

       </property>

        <!-- 数据库映射文件-->

       <mapping resource="dao/TUser.hbm.xml" />

    </session-factory>

</hibernate-configuration>

 

首先咋们建立一张表:如上的建表语句:打开database explorer连接数据库,右击Connected to mysql5,选择New SQL Editor,写上建表语句

截图如下;


 

点击绿色的三角符号,建表ok啦!

Ok进行下一步:在建好的表上右击:选择Hibernate Reverse Engineering,这里需注意我进行这步之前首先一定要关掉如上图sql Editor.

Java src folder: 点击Browser

 

选择T_user下的目录src:点击ok

 

进行下一项:java pakage 我们需填上个dao,名称无所谓,但是我们要让别人理解,更容易清楚我们的编程设计思想,编程不是让别人看不懂,自己很牛,但是我们的编码的最终思想是越来越简单,不是所谓的越搞越复杂,让别人更了解我们的程序。

具体的截图如下:

点击下一步

这步其实没有什么可以填的,我们直接下一步:

 

需要注意的是

1:include referenced table(A->B)

2:include referenced table(A<-B)

我们需要勾选他们:

 

好一切ok^_^。咋们点击finish完成。

生成的目录

 

所限我们需要改的是:Tuser.hbm.xml

<?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">

<!--

    Mapping file autogenerated by MyEclipse Persistence Tools

-->

<hibernate-mapping>

    <class name="dao.TUser" table="t_user" catalog="test">

        <id name="id" type="java.lang.Long">

            <column name="id" />

            <generator class="identity" />

        </id>

        <property name="name" type="java.lang.String">

            <column name="name" />

        </property>

        <property name="age" type="java.lang.Long">

            <column name="age" />

        </property>

    </class>

</hibernate-mapping>

<generator class="identity" />在各项需要改成前面的或是identity

BaseHibernateDAO

package dao;

import org.hibernate.Session;

/**

 *Dataaccessobject(DAO)fordomainmodel

 *@authorMyEclipsePersistenceTools

 */

publicclass BaseHibernateDAO implements IBaseHibernateDAO {

   

    public Session getSession() {

       return HibernateSessionFactory.getSession();

    }

   

}

 

IBaseHibernateDAO

package dao;

import org.hibernate.Session;

/**

 *Dataaccessinterfacefordomainmodel

 *@authorMyEclipsePersistenceTools

 */

publicinterface IBaseHibernateDAO {

    public Session getSession();

}

HibernateSessionFactory

package dao;

TUser

package dao;

/**

 *TUsergeneratedbyMyEclipsePersistenceTools

 */

publicclass TUser implements java.io.Serializable {

    // Fields

    private Long id;

    private String name;

    private Long age;

    // Constructors

    /**defaultconstructor*/

    public TUser() {

    }

    /**minimalconstructor*/

    public TUser(Long id) {

        this.id = id;

    }

    /**fullconstructor*/

    public TUser(Long id, String name, Long age) {

       this.id = id;

       this.name = name;

       this.age = age;

    }

    // Property accessors

    public Long getId() {

       returnthis.id;

    }

    publicvoid setId(Long id) {

       this.id = id;

    }

    public String getName() {

       returnthis.name;

    }

    publicvoid setName(String name) {

       this.name = name;

    }

    public Long getAge() {

       returnthis.age;

    }

    publicvoid setAge(Long age) {

       this.age = age;

    }

}

TUserDAO

package dao;

测试代码:HibernateDemo

 

package onlyfun.caterpillar;

import org.hibernate.Session;

import org.hibernate.Transaction;

import dao.HibernateSessionFactory;

import dao.TUser;

publicclass HibernateDemo { 

    publicstaticvoid main(String[] args) {

       TUser tuser = new TUser();      

       tuser.setName("hibernate测试");   

       tuser.setAge(new Long(23));     

       // 開啟Session,相當於開啟JDBCConnection

       Session session = HibernateSessionFactory.getSessionFactory().openSession();      

       // Transaction表示一組會話操作

       Transaction tx= session.beginTransaction();    

       // 將物件映射至資料庫表格中儲存

       session.save(tuser);     

       tx.commit();      

       session.close();          

       System.out.println("新增資料OK!請先用MySQL觀看結果!");  

       HibernateSessionFactory.shutdown();   

       }

    }

测试结果:


 

测试ok,呵呵。

还有个实例大家练习下我这里只给出建表语句:或测试代码,其他的与上面的方法一样:

建表语句:

Create table Student(

Id int not null auto_increment,

Uername varchar(200) not null,

Password vachar(20) not null,

Age int,

Primary key (id)

)engine = myisam default charset=gbk

测试代码:

package HibernateTransaction;

import java.util.List;

import dao.Student;

import dao.StudentDAO;

publicclass HibernateDAOTest {

     privatestatic Object results;

    publicstaticvoid main(String [] args){

     //实例化dao

     StudentDAO dao = new StudentDAO();

     //打开事务

     org.hibernate.Transaction tran = dao.getSession().beginTransaction();

     //生成普通java

     Student bean = new Student();

     //设置属性

     bean.setUername("struts测试");

     bean.setPassword("1234");

     bean.setAge(100);

     //插入数据

     dao.save(bean);

     //提交事务

        tran.commit();

     

        List<Student> results= dao.findAll();

       for(Student o : results) {

           System.out.println("编号:"+o.getId());

           System.out.println("姓名:"+o.getId());

       }

       dao.getSession().close();

     }

}

posted on 2009-01-15 19:49 mike zeseler 阅读(4609) 评论(3)  编辑  收藏

评论

# re: Hibernate入门 2009-01-16 10:17 crane.wang

怎么不全?  回复  更多评论   

# re: Hibernate入门 2009-02-13 19:42 mike zeseler

更新完成,呵呵。。由于过两天要回学校啦。所以抽个时间来来完成。这里给大家道个歉!对不起!大家情人节快乐!  回复  更多评论   

# re: Hibernate入门 2009-10-31 21:07 南阳百事通

我的站<a href="www.nybst.net" title="南阳百事通"> 希望能得到您的指点!  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

文章档案

.net

“美少女股神”王雅媛

blogjava

books

dzineblog

europe open source

flash

google

j2EE

open erp

open source

Open Source Web Design

seo

seo 国外

sex

sns

Tiobe

w3c

web

Web 前端开发

web 设计blog

web2.0

web-design resource

兄弟软件

免费电子书

博客园

友情链接

建站

开源项目

房产博客

源码

计算机书籍下载站

音乐论坛

搜索

最新评论

阅读排行榜

评论排行榜