hibernate mysql demo_简单的Hibernate访问数据库Demo

最近在学习SSH,现在看到Hibernate这块,动手实现了一个简单的Demo,对Hibernate的功能、使用有了初步了解。 1、首先将Hibernate的jar包复制到Web项目的lib目录下。有些依赖jar包,要额外导入;比如cglib-nodep.jar,不然会报错。 2、配置实体类。这里我用的

最近在学习SSH,现在看到Hibernate这块,动手实现了一个简单的Demo,对Hibernate的功能、使用有了初步了解。

1、首先将Hibernate的jar包复制到Web项目的lib目录下。有些依赖jar包,要额外导入;比如cglib-nodep.jar,不然会报错。

2、配置实体类。这里我用的是一个简单Account类,要注意使用的是javax.persistense.*下面的注解,不是org.hibernate.*下的。

package com.jobhelp.domain;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import javax.persistence.Id;

import javax.persistence.Table;

@Entity//@Entity表示该类能被hibernate持久化

@Table(name="user")//指定Entity对应的数据表名

public class Account {

@Id//指定该列为主键

@GeneratedValue(strategy=GenerationType.AUTO)//auto为自增长

private Integer id;

@Column(name="name")

private String username;

@Column(name="password")

private String password;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

3、在src目录下新建Hibernate的配置文件hibernate.cfg.xml。(MyEclipse向导会自动生成,我用的是Eclipse,就得自己创建了。)

hibernate.cfg.xml的内容如下:

com.mysql.jdbc.Driver

jdbc:mysql://localhost/User

root

123456

20

true

50

23

false

true

org.hibernate.dialect.MySQLDialect

4、新建Hibernate工具类,用于获取session。Hibernate中每一个session代表一次完整的数据库操作。

Hibernate官方提供的HibernateUtil.java

package com.jobhelp.util;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

private static final SessionFactory sessionFactory;//单例模式的SessionFactory

//static代码块,类加载时初始化hibernate,单例只初始化一次

static{

try{

//从hibernate.cfg.xml中加载配置

//加载@注解配置的实体类用AnnotationConfiguration()

//加载xml配置的实体类使用Configuration()

sessionFactory = new AnnotationConfiguration()

.configure("hibernate.cfg.xml").buildSessionFactory();

} catch (Throwable ex){

System.err.println("Initial SessionFactory Error");

throw new ExceptionInInitializerError(ex);

}

}

public static SessionFactory getSessionFactory(){

return sessionFactory;

}

}

5、初始化MySql数据库,建一个简单的User表即可,我用的表数据如下。

mysql> select * from user;

+----+-------+----------+

| id | name | password |

+----+-------+----------+

| 1 | admin | 123456 |

| 2 | bowen | 123456 |

| 3 | tom | 123456 |

| 4 | jack | 123456 |

+----+-------+----------+

6、执行hibernate程序。Hibernate是ORM框架,与数据库打交道。

Hibernate中session会话与JDBC操作数据库流程差不多。

相对Spring中jdbcTemplate的使用,hibernate不用写sql语句,不用封装结果;逻辑清晰,代码简洁很多,显然有利于提高开发效率。

下面是在一个Test类中,执行了Hibernate程序的代码。

package com.jobhelp.util;

import java.util.List;

import org.hibernate.Session;

import org.hibernate.Transaction;

import com.jobhelp.domain.Account;

public class Test {

public static void main(String[] agrs){

/*Account account =new Account();

account.setUsername("jack");

account.setPassword("123456");*/

//start a hibernate session

Session session = HibernateUtil.getSessionFactory().openSession();

//start a transaction

Transaction transaction = session.beginTransaction();

//insert into database

//session.persist(account);

@SuppressWarnings("all")

//hql query

Listlist =session.createQuery("from Account").list();

//print query result

for(Account account2: list){

System.out.println(account2.getId()+" : "+account2.getUsername());

}

transaction.commit();

session.close();

}

}

执行结果:

[2014-11-24 21:26:19,083][DEBUG][org.hibernate.jdbc.AbstractBatcher:366] - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)

[2014-11-24 21:26:19,083][DEBUG][org.hibernate.SQL:401] - select account0_.id as id0_, account0_.password as password0_, account0_.name as name0_ from user account0_

Hibernate: select account0_.id as id0_, account0_.password as password0_, account0_.name as name0_ from user account0_

......

[2014-11-24 21:26:19,108][DEBUG][org.hibernate.engine.StatefulPersistenceContext:787] - initializing non-lazy collections

1 : admin

2 : bowen

3 : tom

4 : jack

[2014-11-24 21:26:19,109][DEBUG][org.hibernate.transaction.JDBCTransaction:103] - commit

......

注意:Hibernate只会生成表结构,但不会创建数据库。如果指定数据库不存在,hibernate会抛出异常。

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值