单独的将hibernate整合到项目中,并实现简单的增删查改。
初步接触hibernate,使用Myeclipse自动创建hibernate和自动建立持久类和其映射.hbm.xml,对mysql数据库中数据的简单增删查改。
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
1.创建数据库驱动连接
单击myeclipse工作空间的右上角的编辑模式,选择Myeclipse Database Explorer。

新建数据库连接
右击左侧的面板,选择new,新建一个数据库连接。

配置连接文件
根据你的数据库选择不同的数据连接方式,填写你要创建的连接的名字,URL等信息,如图。
最重要的是加载驱动,没有的话到网上下载自己数据库的驱动。
我这里是JDBC,连接Mysql数据库。单击next——finish。

选中你新建的数据库,然后单击连接按钮开始进行连接或者双击新建的数据库名连接,注意:一定保证你的数据库服务正常工作,否则是连接不上的。
2.MyEclipse怎么自动建立持久类映射.hbm.xml
连接上之后就可以建立持久类映射了。
打开数据库中的table,选中需要反向工程生成映射的表

选中需要反向工程生成映射的表,右键->Hibernate Reverse Engineering

然后配置一些数据

第一步就是配置数据表到实体类之间的映射。
Java src folder ——指定把反向工程生成的文件放入到那个项目中(这里要指向到src文件夹才可以)
Java package ——实体类和映射文件存放到哪个包当中。(这里通常是项目中的entity包里)
Create POJO<>DB Table mapping information —— 是否生成对应的映射文件(*.hbm.xml文件)
Add Hibernate Mapping Annotations to POJO —— 使用注解配置实体类(注意!上述两者中选择一种即可,要么是实体类+.hbm.xml,实体类+注解)
Java Data Object (POJO <> DB Table) —— 是否生成实体类文件(注意!下面的Createabstract class不要选!因为实体类不需要抽象父类)
finish后在上面所配置的包中就会有实体类和映射文件了

3.Myeclipse自动创建hibernate
在这之前建立web object项目和mysql中的数据库就不说了、、这里我的项目名为HibernateTest数据库为hospital,这是随便的啦、、、
工具:myeclipse 10
过程:选中项目,右键选择:MyEclipse -> Project Facets[Capabilities] -> Install HibernateFacet,选择版本
然后next

next选择数据库连接

next放置hibernate的session工厂

finish后项目中就会自动加载hibernate的jar包等,项目中的hibernate就已经好了。。
建立简单增删查改
我没有写dao接口、、、
daoImpl.java
public class daoImpl { //增加User public void addUser(Users user) { Session session = HibernateSessionFactory.getSession(); Transaction ts = null; try{ log4jInput(user); ts = session.beginTransaction(); session.save(user); ts.commit(); }catch(Exception ex){ //回滚 ts.rollback(); ex.printStackTrace(); }finally{ HibernateSessionFactory.closeSession(); } } //删除User表中的数据 根据主键删除 public boolean deleteUser(Users user){ Session session=HibernateSessionFactory.getSession(); Transaction ts = null; try{ log4jInput(user); ts = session.beginTransaction(); session.delete(user); ts.commit(); return true; }catch(Exception ex){ ts.rollback(); System.out.println("delete"); ex.printStackTrace(); return false; }finally{ HibernateSessionFactory.closeSession(); } } //改User表中的数据 根据主键更改其他信息 public boolean updateUser(Users user){ Session session=HibernateSessionFactory.getSession(); Transaction ts = null; try{ log4jInput(user); ts = session.beginTransaction(); session.update(user); ts.commit(); return true; }catch(Exception ex){ ts.rollback(); System.out.println("update"); ex.printStackTrace(); return false; }finally{ HibernateSessionFactory.closeSession(); } } //查询User表 1.条件where后面的条件 2.占位符对应的数据 3.value对应的数据类型 在没有时为null public List<Users> queryUser(String where,String[] value,Type[] type){ Session session = HibernateSessionFactory.getSession(); Criteria criteria=null; if(where!=null){ criteria = session.createCriteria(Users.class) .add(Restrictions.sqlRestriction(where, value, type)); }else{ criteria = session.createCriteria(Users.class); } @SuppressWarnings("unchecked") List<Users> users=criteria.list(); HibernateSessionFactory.closeSession(); return users; } //log4j的使用 添加log4j的jar,将log4j.properties文件放入src或web info文件下 public void log4jInput(Object o){ Logger log=Logger.getLogger("org.zblog.test"); log.info(o.toString()); }}
也是直接在bean中测试的
public class UserBean { public static void main(String[]a){ addUser(); //deleteUser(); //updateUser(); //queryUser(); } public static void addUser(){ Users user=new Users(); user.setUsername("root"); user.setPassword("root"); user.setRole("admin"); dao d=new dao(); d.addUser(user); } public static void deleteUser(){ Users user=new Users(); user.setUid(15);//主键id dao d=new dao(); System.out.print(d.deleteUser(user)); } //根据主键更改其他信息 public static void updateUser(){ Users user=new Users(); //主键也要设置 user.setUid(14);//主键id user.setUsername("老王"); user.setPassword("1234"); user.setRole("admin"); dao d=new dao(); d.updateUser(user); } public static void queryUser(){ dao d=new dao(); String[] value={"admin"}; Type[] type={Hibernate.STRING}; List<Users> li=d.queryUser("username=?",value,type); for(int i=0;i<li.size();i++){ System.out.println(li.get(i).toString()); } } }
可以直接执行了,可能会出现log4j的警告,但这不会影响数据库里的修改
log4j的警告:
log4j:WARN No appenders could be found for logger(org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
这是log4j没有配置引起的,可以将它的配置文件log4j.properties放置在src下就可以了。
log4j.properties的内容是:
log4j.rootLogger=WARN, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.category.org.zblog=ERROR,A1 log4j.category.org.zblog=INFO,A2 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n log4j.appender.A2=org.apache.log4j.RollingFileAppender log4j.appender.A2.File=E:/study/log4j/zhuwei.html log4j.appender.A2.MaxFileSize=500KB log4j.appender.A2.MaxBackupIndex=1 log4j.appender.A2.layout=org.apache.log4j.HTMLLayout