Hibernate简单实例

#数据库为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();
                }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值