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

单独的将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

完、、、

阅读更多
文章标签: hbm-xml映射 hibernate
个人分类: hibernate
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭