maven+hibernate+mysql使用

1.什么是Hibernate?

hibernate 是一个对象关系映射框架(ORM:),用于对象与关系数据库表记录的转换,封装了JDBC,通过xml或者注解方式来实现java POJO与数据库表的映射,使得程序员可以用面向对象的思维操作数据库。

2.为什么使用Hibernate?

(1)它封装了JDBC;

(2)ORM;

(3)hibernate有自己的一级缓存和二级缓存,一级缓存是session级别的,二级缓存可以配合其他的如memcache等的缓存框架,可以快速读取数据;

当然也可以不适用hibernate,去使用mybatis咯,在项目中多应用一下mybatis再来说二者的区别。

3.怎么使用Hibernate?

(1).pom.xml

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <hibernate.version>4.3.8.Final</hibernate.version>  
</properties>
<dependency>  
    <groupId>org.hibernate</groupId>  
    <artifactId>hibernate-core</artifactId>  
    <version>${hibernate.version}</version>  
</dependency>
<dependency>  
    <groupId>mysql</groupId>  
    <artifactId>mysql-connector-java</artifactId>  
    <version>5.1.34</version>  
</dependency>
(2)配置hibernate.cfg.xml文件

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mytest</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">XXX</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <mapping resource="com/iuniversal/model/CrUser.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>
(3)创建数据库表cr_user

CREATE TABLE cr_user(
            `cuserid` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
            `usercode` VARCHAR(10) NOT NULL,
            `username` VARCHAR(20) NOT NULL,
            PRIMARY KEY (`cuserid`) USING BTREE,
)
(4)创建model类:

public class CrUser implements java.io.Serializable{
	private Integer id;
	private String code;
	private String name;
	//提供默认的构造方法
	public CrUser(){
		
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}	
}
(5)创建映射文件CrUser.hbm.xml,CrUser类同包,注意文件名命名规则,内容如下:

<?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="com.iuniversal.model.CrUser" table="cr_user" catalog="iuniversal">
        <id name="id" type="java.lang.Integer">
            <column name="cuserid" />
            <generator class="identity" />
        </id>
        <!-- 映射CrUser类中的code属性 -->
        <property name="code" type="string">
            <column name="usercode" length="10" not-null="true" unique="true" />
        </property>
        <property name="name" type="string">
            <column name="username" length="20" not-null="true" unique="true" />
        </property>
    </class>
</hibernate-mapping>
(6)创建hibernate启动类:

public class HibernateUtil extends Object{
	private static SessionFactory sessionFactory;
	static
	{
		try{
			Configuration configuration=new Configuration().configure();
			sessionFactory = configuration.buildSessionFactory();
	  	}catch (Throwable ex){
	            throw new ExceptionInInitializerError(ex);
	    }
	}
       private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}	
	public static Session getSession() throws HibernateException
	{
		Session session = (Session) threadLocal.get();
		if (session == null){
			session = sessionFactory.openSession();
			threadLocal.set(session);
		}
	        return session;
	}
	public static void closeSession() throws HibernateException {
		Session session = (Session) threadLocal.get();
        if (session != null)
        	session.close();
        threadLocal.set(null);
    }
	
	public static void shutdown(){
		getSessionFactory().close();
	}
	
}
(7)写一个简单的测试类:

public class HibernateTest {
    public static void main( String[] args )
    {
        Session session = HibernateUtil.getSession();
        Transaction tx = session.beginTransaction();
        try{
             CrUser crUser = new CrUser();
             crUser.setCode("123");
             crUser.setName("hibernate demo");
             session.save(crUser);//这里操作的是java对象
             tx.commit();
             System.out.println("保存成功!");
        }catch(Exception e){
            e.printStackTrace();
            tx.rollback();
            System.out.println("保存失败!");
        }finally{
            HibernateUtil.closeSession();
        }
    }
}
通过上述步骤,查询cr_user表,发现数据插入成功。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值