Hibernate开发配置文件和开发全面流程大全

首先创建一个项目。然后创建配置文件,主要步骤如下:

MyEclipse-->ProjectCapabilities-->addHibernateCapabilities,视图如下:

复选框选中第二个copychecke。。。。那一个。然后点击next;

为了锻炼能力,配置文件第一次手写,不用图形界面自动生成,所以把:选中的点掉;点击next

把这也点掉;点击next;

全部都用手写,所以把此处也点掉;点击Finish;

然后lib里面会自动增加一系列jar

并且src里面也生成了hibernate.cfg.xml,

由于本人此次练习的是整合Struts与Hibernate进行应用的开发

所以还要进行struts相关文件的配置,由于struts相关文件配置比较简单,所以此处省略;

首先编写一个持久化类:本人创建的是person类:

模型类即为javabean,很简单;

注:持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和setXXX()方法。

•持久化类有一个id属性,用来惟一标识Person类的每个对象。在面向对象术语中,这个id属性被称为对象标识符(OID,ObjectIdentifier)

•Hibernate要求持久化类必须提供一个不带参数的默认构造方法

下一步即写一个提交到数据库内容的表单,简单的表单不在此处写了。然后写一个action,获得表单的内容:此处action中的处理方法:execute()里面主要是把表单所要提交的信息调用模型类封装成一个类

下一步即将和hibernateAPI打交道了。。。编写工具类HibernateUtil这个类主要是获得和数据库打交道的Session

主要代码: private static SessionFactory sessionFactory; //由于一共只有一个SessionFactory所以把创建SessionFactory的代码放到static代码块里面,让他只创建一次 static { try { /** * 创建SessionFactory过程: * 1.new Configuration().configure()获得一个configure的实例 * 2.configure.buildSessionFactory()获得创建session的工厂sessionFactory的实例 * */ sessionFactory = new Configuration().configure() .buildSessionFactory(); } catch (Exception e) { e.printStackTrace(); } } public static Session openSession(){ //获得与数据库打交道的实例session Session session=sessionFactory.openSession(); //把工具session返回给调用者 return session; }


注意:此Session非彼Session(HttpSession)

注:

一个SessionFactory实例对应一个数据存储源,应用从SessionFactory中获得Session实例。

SessionFactory有以下特点:

–它是线程安全的,这意味着它的同一个实例可以被应用的多个线程共享。

–它是重量级的,这意味着不能随意创建或销毁它的实例。如果应用只访问一个数据库,只需要创建一个SessionFactory实例,在应用初始化的时候创建该实例。如果应用同时访问多个数据库,则需要为每个数据库创建一个单独的SessionFactory实例。

Session接口是Hibernate应用使用最广泛的接口。

•Session也被称为持久化管理器,它提供了和持久化相关的操作,如添加、更新、删除、加载和查询对象。

•Session有以下特点:

–不是线程安全的,因此在设计软件架构时,应该避免多个线程共享同一个Session实例。

–Session实例是轻量级的,所谓轻量级是指它的创建和销毁不需要消耗太多的资源。这意味着在程序中可以经常创建或销毁Session对象,例如为每个客户请求分配单独的Session实例,或者为每个工作单元分配单独的Session实例。

Session接口提供了操纵数据库的各种方法,如:

–save()方法:把Java对象保存数据库中。

–update()方法:更新数据库中的Java对象。

–delete()方法:把Java对象从数据库中删除。

–get()方法:从数据库中加载Java对象。

然后在编写用session处理数据类DAO类,先编写有关接口然后编写实现类,这个类主要用session处理数据执行事务的类:

示例代码:

//调用工具类获得session

Sessionsession=factory.openSession();

Transactiontx;

try{

//开始一个事务

tx=session.beginTransaction();

//执行事务

...

//提交事务

tx.commit();

}

catch(Exceptione){

//如果出现异常,就撤销事务

if(tx!=null)tx.rollback();

throwe;

}

finally{

//不管事务执行成功与否,最后都关闭Session

session.close();

}

然后编写逻辑处理类(服务类):先写有关接口然后写实现类这个类主要用于处理一些逻辑处理,在这个地方主要用于调用数据处理类DAO进行数据处理

publicclassPersonServiceImplimplementsPersonService{

publicvoidsavePerson(Personperson)

{

PersonDAOpersonDAO=newPersonDAOImpl();

personDAO.savePerson(person);

}

}

然后直接在action里面写出PersonServiceImpl实例进行调用其方法进行就可以了。Action里面主要处理方法代码示例:

publicStringexecute()throwsException

{

Personperson=newPerson();

person.setUsername(username);

person.setPassword(password);

person.setAge(age);

java.sql.DateregisterDate=newjava.sql.Date(newjava.util.Date().getTime());

System.out.println("222222");

person.setRegisterDate(registerDate);

PersonServiceImplpersonService=newPersonServiceImpl();

personService.savePerson(person);

returnSUCCESS;

}

写到这,一个hibernate主要的逻辑层就差不多了,现在就主要看怎样写配置文件了:先配置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"> <hibernate-configuration> <session-factory> <property name="connection.url">jdbc:sqlserver://localhost:1433; DatabaseName=Hibernate</property> <property name="connection.username">sa</property> <property name="connection.password">123456</property> <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <property name="show_sql">true</property> <mapping resource="Person.hbm.xml"/>//映射到具体person表的配置文件 </session-factory> </hibernate-configuration>

注:

Hibernate的描述文件中存放数据库连接驱动程序类,登陆数据库的用户名/密码,映射实体类配置文件的位置等信息。

•将该配置文件存放在src目录下

最后一步:

对持久化(实体)类Person.java文件创建一个Hibernate映射文件Person.hbm.xml

Java的实体类是通过配置文件与数据表中的字段相关联。Hibernate在运行时解析配置文件,根据其中的字段名生成相应的SQL语句

•将该文件存放在src目录下

具体代码示例:

<?xml version="1.0"?> <!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.csh.model.Person" table="person"> <id name="id" column="id" type="int"> <generator class="increment"></generator> </id> <property name="username" column="username" type="string"></property> <property name="password" column="password" type="string"></property> <property name="age" column="age" type="int"></property> <property name="registerDate" column="registerDate" type="date"></property> </class> </hibernate-mapping>

注:id元素对应的一定是数据库的主键列;class="increment"意为自增

<property>元素映射值类型属性

•name属性:指定持久化类的属性的名字。

•type属性:指定Hibernate或Java映射类型。Hibernate映射类型是Java类型与SQL类型的桥梁。

•column属性:指定与类的属性映射的表的字段名。

至此,hibernate开发过程和相关配置就此完毕

注:由于文章图片太多,上传不了,所以没上传,如需要图片示例,请联系本人。

转载请注明出处。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值