hibernate-Myeclipse自动创建并实现简单增删查改

来源:互联网 发布:江西工业工程学院知乎 编辑:程序博客网 时间:2024/05/22 08:28

单独的将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, stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%nlog4j.category.org.zblog=ERROR,A1log4j.category.org.zblog=INFO,A2log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%nlog4j.appender.A2=org.apache.log4j.RollingFileAppenderlog4j.appender.A2.File=E:/study/log4j/zhuwei.htmllog4j.appender.A2.MaxFileSize=500KBlog4j.appender.A2.MaxBackupIndex=1log4j.appender.A2.layout=org.apache.log4j.HTMLLayout

完、、、

0 0