仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1359|回复: 19
打印 上一主题 下一主题

[学习教程] JAVA网站制作之深切浅出进修Hibernate框架(一):从实例动手初识Hibernate框架仓酷云 ...

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-18 11:29:30 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
一旦你有了思想,那你编的程序就有了灵魂,不管是什么语言到了你的手里都会是你的工具而已,他们的价值是能尽快帮助你实现你想要的目标。但是如果你没有了思想,那就像是海里的帆船失去了船帆,是很难到打海的另一边的。这篇博客是hibernate进修的第一篇,次要复杂先容hibernate框架,以后复杂说一下hibernate的目次布局,最初写一个复杂的hibernate实例。经由过程这三步来复杂的熟悉一下hibernate。
空话未几说,步进正题。起首复杂先容一下hibernate框架,它是一种基于JDBC的支流耐久化框架,是一个优异的orm完成;它对JDBC举行了轻量级的封装,年夜年夜简化了数据会见层冗杂的反复代码;并且它使用了java反射机制来完成程序的通明性;它的本意是从对象动身而非干系数据库动身,这一点也就是申明它是以面向对象头脑办理数据库的操纵成绩。
以上是从观点上说的hibernate,上面来看一下hibernate目次布局:

<br>
这就是解压出来的hibernate的目次文件,在这内里doc目次为文档,lib目次为所用的库文件,src为hibernate源代码,hibernate3.jar为打包后的字节码文件。别的一些随后博客碰到再先容。
这里要说的进修hibernate框架一直和3个对照主要的文件打交道,即hibernate自己的设置文件hibernate.cfg.xml文件,这个文件用来设置hibernate本身属性,数据库驱动、数据库毗连和数据库方言;别的一个是对象干系映照设置文件,如UserInfo.hbm.xml。此文件卖力实体对象到干系数据库映照。最初一个就是我们罕见的耐久化类了,也就是对象实际中的实体。
有了下面的基本,我们来一步一步的完成一个hibernate实例。
1.在eclipse中设置hibernate情况:
我们起首创建一个项目,名叫hibernate_first,以后自界说个寄存jar包的库,就取名为UserLibrary;导进相干的包,这些包包含响应数据库驱动、hibernate目次下lib文件夹下的jar包,另有hibernate目次下的hibernate3.jar。

<br>
2.导进hibernate.cfg.xml,而且设置数据库毗连:
将hibernate目次下的hibernate.cfg.xml文件导进项目标src目次下,以后设置数据库毗连信息,我们这个实例拔取的是用Mysql作为数据库,以是我们就要在hibernate.cfg.xml下设置以下信息。
[html]

  • <!DOCTYPEhibernate-configurationPUBLIC
  • "-//Hibernate/HibernateConfigurationDTD3.0//EN"
  • "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

  • <hibernate-configuration>
  • <session-factory>
  • <propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  • <propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/User</property>
  • <propertyname="hibernate.connection.username">root</property>
  • <propertyname="hibernate.connection.password">123</property>
  • <propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>



  • </session-factory>
  • </hibernate-configuration>

<!DOCTYPEhibernate-configurationPUBLIC"-//Hibernate/HibernateConfigurationDTD3.0//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration><session-factory><propertyname="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property><propertyname="hibernate.connection.url">jdbc:mysql://localhost:3306/User</property><propertyname="hibernate.connection.username">root</property><propertyname="hibernate.connection.password">123</property><propertyname="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property></session-factory></hibernate-configuration>
3.创建实体类User.java
[java]

  • importjava.util.Date;

  • publicclassUser{

  • privateStringid;

  • privateStringname;

  • privateStringpassword;


  • publicStringgetId(){
  • returnid;
  • }

  • publicvoidsetId(Stringid){
  • this.id=id;
  • }

  • publicStringgetName(){
  • returnname;
  • }

  • publicvoidsetName(Stringname){
  • this.name=name;
  • }

  • publicStringgetPassword(){
  • returnpassword;
  • }

  • publicvoidsetPassword(Stringpassword){
  • this.password=password;
  • }

  • }

importjava.util.Date;publicclassUser{privateStringid;privateStringname;privateStringpassword;publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicStringgetPassword(){returnpassword;}publicvoidsetPassword(Stringpassword){this.password=password;}}
4.供应User.hbm.xml文件,完成实体类的映照(编写对象干系映照文件,把对象干系映照的逻辑放在此处,这个文件包含表和字段的对象干系,当操纵对象时,该文件经由过程java反射机制发生的办法,会把对象的办法转为干系的办法)

[html]

  • <?xmlversion="1.0"?>
  • <!DOCTYPEhibernate-mappingPUBLIC
  • "-//Hibernate/HibernateMappingDTD3.0//EN"
  • "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  • <hibernate-mapping>
  • <classname="com.cjq.hibernate.User">
  • <idname="id">
  • <generatorclass="uuid"/>
  • </id>
  • <propertyname="name"/>
  • <propertyname="password"/>
  • </class>
  • </hibernate-mapping>

<?xmlversion="1.0"?><!DOCTYPEhibernate-mappingPUBLIC"-//Hibernate/HibernateMappingDTD3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><classname="com.cjq.hibernate.User"><idname="id"><generatorclass="uuid"/></id><propertyname="name"/><propertyname="password"/></class></hibernate-mapping>
这里完成实体类映照的时分数据就要创建了,创建数据库必定要和设置文件中的符合合。
5.将User.hbm.xml文件到场到hibernate.cfg.xml文件中
[html]

  • <mappingresource="com/cjq/hibernate/User.hbm.xml"/>

<mappingresource="com/cjq/hibernate/User.hbm.xml"/>
6.编写运转测试类

[java]viewplaincopyprint?

  • importorg.hibernate.Session;
  • importorg.hibernate.SessionFactory;
  • importorg.hibernate.cfg.Configuration;

  • publicclassHibernateTest{

  • publicstaticvoidmain(String[]args){

  • //读取hibernate.cfg.xml文件
  • Configurationcfg=newConfiguration().configure();

  • //创建SessionFactory
  • SessionFactoryfactory=cfg.buildSessionFactory();

  • //获得session
  • Sessionsession=null;
  • try{
  • session=factory.openSession();
  • //开启事件
  • session.beginTransaction();
  • Useruser=newUser();
  • user.setName("张三");
  • user.setPassword("123");

  • //保留User对象
  • session.save(user);
  • Useru1=(User)session.load(User.class,newString("402881e4361533e901361533eb920001"));
  • System.out.print("从数据库加载数据的用户名为"+u1.getPassword());
  • //提交事件
  • session.getTransaction().commit();
  • }catch(Exceptione){
  • e.printStackTrace();
  • //回滚事件
  • session.getTransaction().rollback();
  • }finally{
  • if(session!=null){
  • if(session.isOpen()){
  • //封闭session
  • session.close();
  • }
  • }
  • }
  • }
  • }

importorg.hibernate.Session;importorg.hibernate.SessionFactory;importorg.hibernate.cfg.Configuration;publicclassHibernateTest{publicstaticvoidmain(String[]args){//读取hibernate.cfg.xml文件Configurationcfg=newConfiguration().configure();//创建SessionFactorySessionFactoryfactory=cfg.buildSessionFactory();//获得sessionSessionsession=null;try{session=factory.openSession();//开启事件session.beginTransaction();Useruser=newUser();user.setName("张三");user.setPassword("123");//保留User对象session.save(user);Useru1=(User)session.load(User.class,newString("402881e4361533e901361533eb920001"));System.out.print("从数据库加载数据的用户名为"+u1.getPassword());//提交事件session.getTransaction().commit();}catch(Exceptione){e.printStackTrace();//回滚事件session.getTransaction().rollback();}finally{if(session!=null){if(session.isOpen()){//封闭sessionsession.close();}}}}}
7.倡议
最好到场以下设置项,便利察看hibernatesql的天生:

[html]

  • <propertynamepropertyname="hibernate.show_sql">true</property>
  • lt;propertyname="hibernate.format_sql">true</property>

<propertyname="hibernate.show_sql">true</property><propertyname="hibernate.format_sql">true</property>
最好到场log4j设置文件,将该设置文件拷贝到src下,便于程序的调试。
8.了局

<br>
经由过程一些观点和目次另有实例完成,如今对hibernate有所懂得,上面的博客要对JDBC和反射机制做一些复杂的先容,这些常识是hibernate框架的基本,以是有需要在深切进修hibernate框架之前先容一下。敬请等候!!!

最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net网页编程并驾齐驱的
沙发
 楼主| 发表于 2015-3-24 19:23:54 | 显示全部楼层
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-10 07:02

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表