工程使用Maven来 管理依赖,Hibernate版本4.2.0.Final。
工程结构图:
pom.xml文件:
1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3 <modelVersion>4.0.0</modelVersion>
4
5 <groupId>com.purple_river.itat.maven.demo.user.dao</groupId>
6 <artifactId>user-dao</artifactId>
7 <version>0.0.1-SNAPSHOT</version>
8 <packaging>jar</packaging>
9
10 <name>user-dao</name>
11 <url>http://maven.apache.org</url>
12
13 <properties>
14 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15 </properties>
16
17 <dependencies>
18 <dependency>
19 <groupId>junit</groupId>
20 <artifactId>junit</artifactId>
21 <version>4.10</version>
22 <scope>test</scope>
23 </dependency>
24 <dependency>
25 <groupId>org.hibernate</groupId>
26 <artifactId>hibernate-core</artifactId>
27 <version>4.2.0.Final</version>
28 </dependency>
29 <dependency>
30 <groupId>mysql</groupId>
31 <artifactId>mysql-connector-java</artifactId>
32 <version>5.1.27</version>
33 </dependency>
34 </dependencies>
35 </project>
hibernate.cfg.xml文件:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE hibernate-configuration PUBLIC
3 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
4 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
5 <hibernate-configuration>
6 <session-factory>
7 <!--显示执行的SQL语句 -->
8 <property name="show_sql">true</property>
9 <!-- 格式化输出 -->
10 <property name="format_sql">true</property>
11 <!--连接字符串 -->
12 <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
13 <!--连接数据库的用户名 -->
14 <property name="connection.username">root</property>
15 <!--数据库用户密码 -->
16 <property name="connection.password">soft</property>
17 <!--数据库驱动 -->
18 <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
19 <!--选择使用的方言 -->
20 <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
21 <property name="hibernate.hbm2ddl.auto">update</property>
22 <property name="configurationClass">org.hibernate.cfg.AnnotationConfiguration</property>
23 <mapping class="com.purple_river.itat.maven.demo.bean.user.User" />
24 </session-factory>
25 </hibernate-configuration>
User类:
1 package com.purple_river.itat.maven.demo.bean.user;
2
3 import java.io.Serializable;
4 import java.util.Date;
5
6 import javax.persistence.Column;
7 import javax.persistence.Entity;
8 import javax.persistence.GeneratedValue;
9 import javax.persistence.Id;
10 import javax.persistence.Table;
11
12 import org.hibernate.annotations.GenericGenerator;
13
14 @Entity
15 @Table(name="user")
16 public class User implements Serializable
17 {
18 private static final long serialVersionUID = -2602075959996355784L;
19 @Id
20 @GenericGenerator(name="generator",strategy="increment")
21 @GeneratedValue(generator="generator")
22 @Column(name="id",nullable=false,unique=true)
23 private long id;
24 /**
25 * @return the id
26 */
27 public long getId() {
28 return id;
29 }
30
31 /**
32 * @param id the id to set
33 */
34 public void setId(long id) {
35 this.id = id;
36 }
37
38 @Column(name="username",nullable=false)
39 private String username;
40 @Column(name="age")
41 private int age;
42 @Column(name="birthday")
43 private Date birthday;
44
45 /**
46 * @return the username
47 */
48 public String getUsername() {
49 return username;
50 }
51
52 /**
53 * @param username the username to set
54 */
55 public void setUsername(String username) {
56 this.username = username;
57 }
58
59 /**
60 * @return the age
61 */
62 public int getAge() {
63 return age;
64 }
65
66 /**
67 * @param age the age to set
68 */
69 public void setAge(int age) {
70 this.age = age;
71 }
72
73 /**
74 * @return the birthday
75 */
76 public Date getBirthday() {
77 return birthday;
78 }
79
80 /**
81 * @param birthday the birthday to set
82 */
83 public void setBirthday(Date birthday) {
84 this.birthday = birthday;
85 }
86
87 /**
88 *
89 */
90 public User() {
91 super();
92 // TODO Auto-generated constructor stub
93 }
94
95 /**
96 * @param username
97 * @param age
98 * @param birthday
99 */
100 public User(String username, int age, Date birthday) {
101 super();
102 this.username = username;
103 this.age = age;
104 this.birthday = birthday;
105 }
106
107 /* (non-Javadoc)
108 * @see java.lang.Object#toString()
109 */
110 @Override
111 public String toString() {
112 return "User [username=" + username + ", age=" + age + ", birthday="
113 + birthday + "]";
114 }
115
116
117 }
HibernateUtil类:
1 /*
2 * @packageName:com.purple_river.itat.maven.demo.user.dao.util
3 * @fileName:HibernateUtil.java
4 * @description:Hibernate操作工具类
5 * @author:luckystar2010
6 * @date:2013-11-28
7 */
8 package com.purple_river.itat.maven.demo.user.dao.util;
9
10 import org.hibernate.SessionFactory;
11 import org.hibernate.cfg.Configuration;
12 import org.hibernate.service.ServiceRegistry;
13 import org.hibernate.service.ServiceRegistryBuilder;
14
15 public final class HibernateUtil {
16 private static SessionFactory factory = null;
17
18 public static SessionFactory getSessionFactory() {
19 if (factory == null) {
20 Configuration conf = new Configuration().configure();
21 ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(conf.getProperties()).buildServiceRegistry();
22 factory = conf.buildSessionFactory(serviceRegistry);
23 }
24
25 return factory;
26 }
27
28 /*public static void main(String[] args) {
29 SessionFactory sf = HibernateUtil.getSessionFactory();
30 System.out.println(sf.toString());
31 }*/
32 }
IUserDao类 :
1 /*
2 * @packageName:com.purple_river.itat.maven.demo.user.dao
3 * @fileName:IUserDao.java
4 * @description:用户管理数据库操作接口
5 * @author:luckystar2010
6 * @date:2013-11-28
7 */
8 package com.purple_river.itat.maven.demo.user.dao;
9
10 import java.util.List;
11
12 import com.purple_river.itat.maven.demo.bean.user.User;
13
14 public interface IUserDao {
15
16 public void addUser(User user);
17 public User getUser(String name);
18 public List<User> getAll();
19 }
UserDao类:
1 /*
2 * @packageName:com.purple_river.itat.maven.demo.user.dao
3 * @fileName:UserDao.java
4 * @description:用户管理数据库操作接口
5 * @author:luckystar2010
6 * @date:2013-11-28
7 */
8 package com.purple_river.itat.maven.demo.user.dao;
9
10 import java.util.List;
11
12 import org.hibernate.HibernateException;
13 import org.hibernate.Session;
14 import org.hibernate.SessionFactory;
15
16 import com.purple_river.itat.maven.demo.bean.user.User;
17 import com.purple_river.itat.maven.demo.user.dao.util.HibernateUtil;
18
19 public class UserDao implements IUserDao {
20
21 /* (non-Javadoc)
22 * @see com.purple_river.itat.maven.demo.user.dao.IUserDao#addUser(com.purple_river.itat.maven.demo.bean.user.User)
23 */
24 public void addUser(User user) {
25 if (user == null) {
26 throw new NullPointerException("the entity[user] which to be saved is null!");
27 }
28
29 Session session = null;
30 try {
31 SessionFactory factory = HibernateUtil.getSessionFactory();
32 session = factory.openSession();
33 session.beginTransaction();
34 session.save(user);
35 session.getTransaction().commit();
36 } catch (HibernateException e) {
37 session.getTransaction().rollback();
38 e.printStackTrace();
39 } finally {
40 if (session != null) {
41 session.close();
42 }
43 }
44
45 }
46
47 /* (non-Javadoc)
48 * @see com.purple_river.itat.maven.demo.user.dao.IUserDao#getUser(java.lang.String)
49 */
50 public User getUser(String name) {
51 User user = null;
52 Session session = null;
53 try {
54 SessionFactory factory = HibernateUtil.getSessionFactory();
55 session = factory.openSession();
56 user = (User) session.createQuery("from User where username = ?").setParameter(0, name).uniqueResult();
57 } catch (HibernateException e) {
58 e.printStackTrace();
59 } finally {
60 if (session != null) {
61 session.close();
62 }
63 }
64
65 return user;
66 }
67
68 /* (non-Javadoc)
69 * @see com.purple_river.itat.maven.demo.user.dao.IUserDao#getAll()
70 */
71 public List<User> getAll() {
72 List<User> list = null;
73 try {
74 list = HibernateUtil.getSessionFactory().openSession().createCriteria(User.class).list();
75 } catch (HibernateException e) {
76 // TODO Auto-generated catch block
77 e.printStackTrace();
78 }
79 return list;
80 }
81
82 }
TestUserDao类:
1 /*
2 * @packageName:com.purple_river.itat.maven.demo.user.dao
3 * @fileName:TestUserDao.java
4 * @description:Test Case for UserDao
5 * @author:luckystar2010
6 * @date:2013-11-28
7 */
8 package com.purple_river.itat.maven.demo.user.dao;
9
10 import java.util.Calendar;
11 import java.util.List;
12
13 import org.jboss.logging.Logger;
14 import org.junit.After;
15 import org.junit.Assert;
16 import org.junit.Before;
17 import org.junit.Test;
18
19 import com.purple_river.itat.maven.demo.bean.user.User;
20
21 public class TestUserDao {
22 public final static org.jboss.logging.Logger logger = Logger.getLogger(TestUserDao.class);
23
24 private IUserDao userDao ;
25
26 @Before
27 public void setUp() {
28 userDao = new UserDao();
29 }
30
31 @Test
32 public void testAddUser() {
33 logger.info("Test [UserDao.addUser].");
34 Calendar c = Calendar.getInstance();
35 c.set(2012, 01,01);
36 User user = new User("admin",1,c.getTime());
37
38 userDao.addUser(user);
39 }
40
41 @Test
42 public void testGetUser() {
43 logger.info("Test [UserDao.getUser].");
44
45 User user = userDao.getUser("admin");
46 logger.info(user);
47 Assert.assertEquals(user.getUsername(),"admin");
48 Assert.assertEquals(user.getAge(),1);
49 }
50
51 @Test
52 public void testGetAll() {
53 logger.info("Test [UserDao.listAll].");
54
55 List<User> userList = userDao.getAll();
56 Assert.assertTrue(userList.size() == 1);
57 logger.info(userList.get(0));
58 }
59
60 @After
61 public void tearDown() {
62 userDao = null;
63 }
64 }
之所以记录下来,是因为搭建环境时遇到了一些错误,所以这里记录对以后有个参考。