Hibernate简单实例

来源:互联网 发布:湖北文理学院网络 编辑:程序博客网 时间:2024/06/01 09:49
#数据库为mysql 编译器为idea,操作环境linux mint!

数据库:
create database leehuan;
use leehuan //进入leehuan数据库中

创建表CREATE TABLE USER (USER_ID int(25),NAME varchar(25),PASSWORD varchar(25),TYPE varchar(25),PRIMARY KEY (USER_ID))

创建映射关系bean类

import java.io.Serializable;/** * Created by user on 16-12-19. */public class User implements Serializable {    //每创建一个类似Bean的类,我们需要创建一个xml文件,而xml文件及映射设数据库中对应的每一个row    private int id;    private String name;    private String password;    private String type;    public User() {    }    public int getId() {        return id;    }    public String getName() {        return name;    }    public String getPassword() {        return password;    }    public String getType() {        return type;    }    public void setId(int id) {        this.id = id;    }    public void setName(String name) {        this.name = name;    }    public void setPassword(String password) {        this.password = password;    }    public void setType(String type) {        this.type = type;    }}

创建映射关系的User-hbm.xml

<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-mapping PUBLIC        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping>    <class name="User" table="USER">        <!--此id用来做标识-->        <id name="id" type="java.lang.Integer" column="USER_ID">            <generator class="increment"/>        </id>        <property name="name" type="java.lang.String" column="NAME" length="25"/>        <property name="password" type="java.lang.String" column="PASSWORD" length="25"/>        <property name="type" type="java.lang.String" column="TYPE" length="25"/>    </class></hibernate-mapping>

创建主类(一般选择idea hibernate会自动创建)

import org.hibernate.HibernateException;import org.hibernate.SessionFactory;import org.hibernate.Session;import org.hibernate.Query;import org.hibernate.cfg.Configuration;import org.hibernate.metadata.ClassMetadata;import java.util.Map;/** * Created by user on 16-12-19. */public class Main {    private static final SessionFactory ourSessionFactory;    static {        try {            ourSessionFactory = new Configuration().                    configure("hibernate.cfg.xml").                    buildSessionFactory();        } catch (Throwable ex) {            throw new ExceptionInInitializerError(ex);        }    }    public static Session getSession() throws HibernateException {        return ourSessionFactory.openSession();    }    public static void main(final String[] args) throws Exception {        final Session session = getSession();        try {            System.out.println("querying all the managed entities...");            final Map metadataMap = session.getSessionFactory().getAllClassMetadata();            for (Object key : metadataMap.keySet()) {                final ClassMetadata classMetadata = (ClassMetadata) metadataMap.get(key);                final String entityName = classMetadata.getEntityName();                final Query query = session.createQuery("from " + entityName);                System.out.println("executing: " + query.getQueryString());                for (Object o : query.list()) {                    System.out.println("  " + o);                }            }        } finally {            session.close();        }    }}

配置hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC        "-//Hibernate/Hibernate Configuration DTD//EN"        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"><hibernate-configuration>    <session-factory>        <!--配置数据库JDBS的驱动-->        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/leehuan</property>        <property name="hibernate.connection.username">root</property>        <property name="hibernate.connection.password">lihuan</property>        <property name="connection.pool_size">1</property>        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>        <property name="show_sql">true</property>        <mapping resource="User-hbm.xml"></mapping>    </session-factory></hibernate-configuration>

创建UserDao以及UserDaoimp

/** * Created by user on 16-12-19. */public interface UserDao {    void delete(User user);    void update(User user);    User findByid(int id); //根据用户标识查找用户    void save(User user); //添加用户}--------------------------------------------------------import org.hibernate.Session;import org.hibernate.Transaction;/** * Created by user on 16-12-20. */public class UserDaoImpl implements UserDao {    @Override    public void delete(User user) {        Session session = Main.getSession();        Transaction transaction = session.beginTransaction();        try {            session.delete(user);            transaction.commit();        }catch (Exception ex){            ex.printStackTrace();            transaction.rollback();        }finally {            HibernateUtil.closeSession();        }    }    @Override    public void update(User user) {        Session session = Main.getSession();        Transaction transaction = session.beginTransaction();        try {            session.update(user);            transaction.commit();        }catch (Exception ex){            ex.printStackTrace();            transaction.rollback();        }finally {            HibernateUtil.closeSession();        }    }    @Override    public User findByid(int id) {        User user = null;        Session session = Main.getSession();        Transaction transaction = session.beginTransaction();        try {            user = (User)session.get(User.class,id);            transaction.commit();        }catch (Exception ex){            ex.printStackTrace();            transaction.rollback();        }finally {            HibernateUtil.closeSession();        }        return user;    }    @Override    public void save(User user) {        Session session = Main.getSession();        Transaction transaction = session.beginTransaction();        try{            //保存user            session.save(user);            //提交            transaction.commit();        }catch (Exception ex){            ex.printStackTrace();            transaction.rollback();        }finally {            //最后清除close            HibernateUtil.closeSession();        }    }}

创建获取UserDao获取实例的DaoFactory

/** * Created by user on 16-12-20. */public class DaoFactory {    public static UserDao getUserDaoinstan(){        return new UserDaoImpl();    }}

最后进行单元测试:我选择的为Junit4的Testing library测试,需要导入Junit-4.8.2.jar和hamcrest-core-1.3.jar的包

import org.junit.Before;import org.junit.Test;/** * Created by user on 16-12-20. */public class UserDaoImplTest {    @Before    public void setUp() throws Exception {    }    @Test    public void save(){        UserDao userDao =  DaoFactory.getUserDaoinstan();        try {                    User user = new User();                    user.setId(6);                    user.setName("JACK");                    user.setPassword("123");                    user.setType(null);            userDao.save(user);                }catch (Exception e){                    e.printStackTrace();                }    }}
0 0
原创粉丝点击