`
djsl6071
  • 浏览: 575564 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

MyEclipse下Hibernate入门级应用

阅读更多

所谓的对象-关系映射模式(ORM),在单个组件中负责所有实体域对象的持久化封装数据访问细节。由于目前常用的是关系数据库系统,欲将面向对象编程思想里的“对象”(常指实体域对象)永久保存到数据库中,就需要使用到对象持久化。对象持久化的模式除ORM以外,还有主动域对象模式、JDO模式、CMP模式(J2EE中常用)等等。而Hibernate就是最常用的ORM中间件之一。

应用程序可以直接通过Hibernate API访问数据库。Hibernate API中的装口可分为以下几类:
·  提供访问数据库的操作的接口。这些接口包括:Session、Transaction和Qurey接口。
·  用于配置Hibernate的接口:Configuration
·  回调接口,使应用程序接受Hibernate内部发生的事件并做出相关的回应。包括:Interceptor、Liftcyclte和Validateble接口。
·  用于扩展hibernate的功能的接口。如UserType、CompositeUserType和IdentifierGenerator接口。
Hibernate内部封装了JDBC、JTA(Java Transaction API)和JNDI(Java Naming and Directory Interface)。JDBC提供底层的数据访问操作,只要用户提供了相应的JDBC驱动程序,Hibernate可以访问任何一个数据库系统。JNDI和JTA使Hibernate能够和J2EE应用服务器集成。


下面是一个自己在学Hibernate时的第一个简单应用,直接在myeclipse下完成的:
目的:学习简单的使用Hibernate将对象持久化到数据库.
过程如下:
建立数据库和相关的表。
在myeclipse database explorer下配置好数据库设置(非必须但是事先配置好的话,后面的数据映射就会方便很多)
在elipse下建立了一个web project,在项目上add Hibernate Capabilites..在由myeclipse自动生成好的hibernate.cfg.xml里配置好。

这里我的hibernate.cfg.xml配置文件如下:
[qutoe]<?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>
                <property name="connection.url">
                        jdbc:mysql://localhost:3306/hibernate_test
                </property>
                <property name="dialect">
                        org.hibernate.dialect.MySQLDialect
                </property>
                <property name="myeclipse.connection.profile">
                        Mysql JDBC
                </property>
                <property name="connection.driver_class">
                        com.mysql.jdbc.Driver
                </property>
                <property name="show_sql">true</property>
                <mapping resource="Customer.hbm.xml" /><!--这一行后来加上的-->


        </session-factory>

</hibernate-configuration>[/quote]


创建欲持久化的类Customer
在这个类里面包含与数据库相应表直接相关的一些属性,以及相应的getXXXX()和setXXXX()方法(很类似于javabean)。

生成与Customer映射的Customer.hbm.xml。在这里可以在myeclipse database explorer(Hibernate Reverse Engineering...)下去创建生成。

写一个处理方法就可以将Customer持久化到数据库里了~
比如已经初始化了一个Customer对象,就可以使用以下代码将它持久化到数据库:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
session.save(c);
tx.commit();
session.close();
 

 

Hibernate的初始化:
1)创建一个Configuration类的实例。他的构造方法的把默认文件路径下的配置文件中的配置信息读入到内存。
2)调用Configuration类的configure()把配置文件中的确良Customer.hbm.xml文件映射信息读入到内存中。
3)调用Configuration类的buildSessionFactory()创建一个SessionFactory实例并把Configuration对象包含的所有配置信息拷贝到SessionFactory对象缓存中。SessionFactory代表一个数据存储源。
然后,就可以调用SessionFactory实例的openSession()来获得Session实例,再通过它执行访问数据库的操作。
Session接口提供了操纵数据库的各种方法,如:
save():把对象保存数据库中。
update():更新数据库中的java对象
delete():把Java对象中数据库中删除
load():从数据库中加载Java对象
find():从数据库中查询java对象
通常将每一个Session实例和一个数据库事务绑定。
 

myeclipse+struts+hibernate的简单应用~

1)首先创建一个web project,为其加上struts组件。
2)创建一个struts form、action和jsp页面。设置配置文件。可以直接在无hibernate的环境下运行此web应用。
3)为了实现表现层、业务层、持久层的分离,建立一个欲持久化的BusinessBean,包含一系列属性和相应的getter和setter。
4)引入hibernate组件,配置好数据映射文件。(这里要注意配置文件里的类路径,记得加上包的名字)
5)建立一个用于处理数据库操作的类
6)在Action里处理业务逻辑并将处理结果返回到web browse
 

 

Hibernate对象关系映射详解

持久化类使用JavaBean风格,为需要被访问的属性提供getXXXX()和setXXXX()方法。
Java应用程序不能访问持久化类的private类型的getXXXX()和setXXXX()方法,而Hibernate没有这个限制。
可以在持久化类的访问方法中加入程序逻辑。
比如说:
...
private String firstName;
private String lastName;

public String getName(){
return firstName+ "" +lastName;
}

public void setName(String name){
StringTokenizer t = new StringTokenizer(name);
firstName = t.nextToken();
lastName = t.nextToken();
}
...
在相应映射文件中无需映射该类的firstName和lastName属性而是映射name属性。它和相应数据表的NAME字段对应:<property name="name" column="NAME" />

<property>元素有一个access属性,如果将这个属性设置为field,则Hibernate可以运用java反射机制直接访问类的属性。例如如果设置<property name="name" access="field">,则Hibernate可以直接访问Customer.name属性,而不用调用setName()和getName()。

可以在setXXXX()中加入数据验证逻辑。不过更好的方法是在表示层或业务逻辑层进行验证。

<property>的formula属性,用来设置一个sql表达式,Hibernate将根据它来计算出派生属性的值。例如:
<property name="totalPrice" formula="(select sum(o.PRICE) from ORDERS o where o.CUSTOMER_ID=ID)">,这里totalPrice的取值为与Customer对象关联的所有Order对象的price属性值的和。当Hibernate从数据库中查询Customer对象时,在select语句中会包含以上用于计算totalPrice派生属性的子查询语句。

可以控制insert和update语句,例如:
<property name="price" update="false" column="PRICE"/>
以上代码把<property>元素的update属性设为false,这表明在update语句中不会包含PRICE字段。同理可以设置<property>的insert属性等等.


<hibernate-mapping>可以设置default-schema属性,比如:
<hibernate-mapping default-schema="NE">
<class name="mypack.Customer" table="CUSTOMERS">
</hibernate-mapping>
以上代码对于映射文件中的Customer类,Hibernate会把它映射成为表NE_CUSTOMERS。
另外也可以为单独的类设定命名Schenma
<class name="mypack.Customer" table="CUSTOMERS" schema="NE">
同样可以得到上面的功能.

<hibernate-mapping>设置package属性时,比如:
<hibernate-mapping package="mypack">
<class name="Customer" table="CUSTOMERS" />
<class name="Order" table="ORDERS" />
</hibernate-mapping>
这样等同于:
<hibernate-mapping>
<class name="mypack.Customer" table="CUSTOMERS" />
<class name="mypack.Order" table="ORDERS" />
</hibernate-mapping>
 
  

 

HIBERNATE - 符合Java习惯的关系数据库持久化  chs

http://www.hibernate.org/hib_docs/reference/zh-cn/html/quickstart.html

分享到:
评论

相关推荐

    MyEclipse Hibernate 快速入门中文教程

    入门级的MyEclipse Hibernate中文教程

    Myeclipse开发struts+hibernate+spring新手入门--环境配置---项目开发示例

    同加载struts方式类似,选择Myeclipse后在弹出的二级菜单中选择Add Hibernate Capabilities…后提示如下图所示: 可以根据提示,选择Hibernate Specification:本项目选择Hibernate3,其他默认,Next&gt; 默认后直接...

    hibernate hellowrold入门级代码

    hibernate学习入门代码,可参考学习网址:http://blog.csdn.net/u012868077/article/details/52713238

    完整Hibernate入门配置示例

    Hibernate3.3.1,MySQL5.1.36 独立的Java Application源程序,完整的Hibernate3.3.1入门级(配置)完整示例. 未用Eclipse或MyEclipse,JC几乎纯手工实现,含所需库文件. 2009-12-15

    Hibernate3 入门教程(纯Eclipse版)

    Hibernate是一个不依赖其他平台的轻量级的中间件,现在到处充斥着通过各种工具使用Hibernate进行开发的教程,如 MyEclipse, Ant, Maven等等,但是去掉这些工具,事实上,Hibernate仍然可以使用的。下面的讲解就是...

    通用后台管理系统(ExtJS 4.2+Hibernate 4.1.7+Spring MVC 3.2.8)

    4、Hibernate集成二级缓存框架Ehcache。 5、数据库是MySQL、Oracle和SQL Server,Hibernate的Dialect可使程序移植到其他数据库。 6、采用开源的互动地图Javascript库Leaflet,处理自定义在线地图。 7、采用Google ...

    Java Web开发从初学到精通随书光盘源码

    Web开发中,Strurts+Hibemate+Spring已经成为轻量级开发J2EE的标准配置,但一些Ajax和JSF框架也应用很广泛,这些是目前Java程序员必须掌握的技能。《Java Web开发从初学到精通》的编写顺序从基础到框架,先让读者...

    ssh整合实例源代码

    这是整合spring、Struts2和Hibernate做的一个入门级的用户登录系统。适合于初学者

    计算机网络专业毕业实习报告3000字.docx

    在这期间 们做了一个模拟项目:课题是物流仓库管理系统的设计与实现 ,使用的框架是Struts和Hibernate,用的技术是java ,开发平台是myeclipse ,数据库是mysql 。 Java语言从它向世人打招呼的那一天开始它就把自己...

    用案例学Java Web整合开发 源码

    从开发工具Eclipse + MyEclipse和Jbuilder,到服务器端的框架Struts、Hibernate、Spring的持续升温,再加上相关的服务器软件Tomcat、Weblogic等,Java已经发展成为一个完整的产品系列。《用案例学JavaWeb整合开发:...

    spring学习笔记

    ............................................................................................................................5 1.2.4EJB:企业级 JavaBean.....................................................

Global site tag (gtag.js) - Google Analytics