Maven的学习资料收集--(六) 构建Hibernate项目

前面我们使用Maven构建了Struts2项目,这里我们来试一下Hibernate项目:

这里的例子,大体框架应该是正确的,但是,对于Maven的很多约定都没有掌握,估计包的命名都不是非常好,等以后,理解深刻了再改吧

1. 构建一个基本的Web项目

这里请参考前面的博客,一样的

2. 添加依赖,修改pom.xml

[html] view plaincopy

  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/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.deppon.demo</groupId>
  5. <artifactId>test03</artifactId>
  6. <packaging>war</packaging>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>test03 Maven Webapp</name>
  9. <url>http://maven.apache.org</url>
  10. <!-- 属性配置 -->
  11. <properties>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. </properties>
  14. <dependencies>
  15. <dependency>
  16. <groupId>junit</groupId>
  17. <artifactId>junit</artifactId>
  18. <version>4.10</version>
  19. <scope>test</scope>
  20. </dependency>
  21. <!-- 添加Hibernate依赖 -->
  22. <dependency>
  23. <groupId>org.hibernate</groupId>
  24. <artifactId>hibernate-core</artifactId>
  25. <version>3.6.5.Final</version>
  26. </dependency>
  27. <!-- 添加Log4J依赖 -->
  28. <dependency>
  29. <groupId>log4j</groupId>
  30. <artifactId>log4j</artifactId>
  31. <version>1.2.16</version>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.slf4j</groupId>
  35. <artifactId>slf4j-api</artifactId>
  36. <version>1.6.1</version>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.slf4j</groupId>
  40. <artifactId>slf4j-nop</artifactId>
  41. <version>1.6.4</version>
  42. </dependency>
  43. <!-- 添加javassist -->
  44. <dependency>
  45. <groupId>javassist</groupId>
  46. <artifactId>javassist</artifactId>
  47. <version>3.11.0.GA</version>
  48. </dependency>
  49. </dependencies>
  50. <build>
  51. <finalName>test03</finalName>
  52. </build>
  53. </project>

在保存的时候,Maven会自动从库中各种包下载到本地,如果有异常的话,可以尝试手动下载

3. 添加hibernate.cfg.xml和log4j.properties资源文件

注意,资源文件的话,根据约定,需要放在src/main/resources文件夹下

hibernate.cfg.xml

[html] view plaincopy

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!-- Database connection settings -->
  8. <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
  9. <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=Demo</property>
  10. <property name="connection.username">ygy</property>
  11. <property name="connection.password">shishi</property>
  12. <property name="javax.persistence.validation.mode">none</property>
  13. <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
  14. <property name="current_session_context_class">thread</property>
  15. <property name="show_sql">true</property>
  16. <property name="format_sql">true</property>
  17. <property name="hbm2ddl.auto">update</property>
  18. <mapping class="com.deppon.test03.entity.PersonEntity"/>
  19. </session-factory>
  20. </hibernate-configuration>

log4j.properties

[java] view plaincopy

  1. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  2. log4j.appender.stdout.Target=System.out
  3. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  4. log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  5. log4j.rootLogger=debug, stdout
  6. log4j.logger.org.hibernate.tool.hbm2ddl=debug

4. 新建一个实体类,测试一下

PersonEntity.java

[java] view plaincopy

  1. package com.deppon.test03.entity;
  2. import javax.persistence.Column;
  3. import javax.persistence.Entity;
  4. import javax.persistence.Id;
  5. import javax.persistence.Table;
  6. @Entity
  7. @Table(name = "t_person")
  8. public class PersonEntity implements java.io.Serializable {
  9. private static final long serialVersionUID = -4376187124011546736L;
  10. private Integer id;
  11. private String name;
  12. @Id
  13. public Integer getId() {
  14. return id;
  15. }
  16. public void setId(Integer id) {
  17. this.id = id;
  18. }
  19. @Column(length = 50 , nullable = false , unique = true)
  20. public String getName() {
  21. return name;
  22. }
  23. public void setName(String name) {
  24. this.name = name;
  25. }
  26. @Override
  27. public String toString() {
  28. return "PersonEntity [id=" + id + ", name=" + name + "]";
  29. }
  30. }

HibernateUtil.java

[java] view plaincopy

  1. package com.deppon.test03.util;
  2. import org.apache.log4j.Logger;
  3. import org.hibernate.HibernateException;
  4. import org.hibernate.Session;
  5. import org.hibernate.SessionFactory;
  6. import org.hibernate.cfg.Configuration;
  7. public class HibernateUtil {
  8. /** ThreadLocal Session Map */
  9. public static final ThreadLocal<Session> SESSIONMAP = new ThreadLocal<Session>();
  10. private static final SessionFactory sessionFactory;
  11. private static final Logger LOGGER = Logger.getLogger(HibernateUtil.class);
  12. static {
  13. try {
  14. LOGGER.debug("HibernateUti.static - loading cofig");
  15. sessionFactory = new Configuration().configure("hibernate.cfg.xml")
  16. .buildSessionFactory();
  17. LOGGER.debug("HibernateUtil.static - end");
  18. } catch (Throwable ex) {
  19. ex.printStackTrace();
  20. LOGGER.error("HibernateUti error : ExceptionInInitializerError");
  21. throw new ExceptionInInitializerError(ex);
  22. }
  23. }
  24. private HibernateUtil() {
  25. }
  26. public static Session getSession() throws HibernateException {
  27. Session session = SESSIONMAP.get();
  28. if(session == null) {
  29. session = sessionFactory.openSession();
  30. SESSIONMAP.set(session);
  31. }
  32. return session;
  33. }
  34. public static void closeSession() throws HibernateException {
  35. Session session = SESSIONMAP.get();
  36. SESSIONMAP.set(null);
  37. if(session != null) {
  38. session.close();
  39. }
  40. }
  41. }

测试类 ModelTest.java

[java] view plaincopy

  1. package com.deppon.test03.model;
  2. import java.util.List;
  3. import org.hibernate.Session;
  4. import org.hibernate.Transaction;
  5. import org.hibernate.cfg.Configuration;
  6. import org.hibernate.tool.hbm2ddl.SchemaExport;
  7. import org.junit.Assert;
  8. import org.junit.Test;
  9. import com.deppon.test03.entity.PersonEntity;
  10. import com.deppon.test03.util.HibernateUtil;
  11. public class ModelTest {
  12. @Test
  13. public void testGetSession() {
  14. Session session = HibernateUtil.getSession();
  15. Assert.assertNotNull(session);
  16. HibernateUtil.closeSession();
  17. }
  18. @Test
  19. public void testExport() {
  20. new SchemaExport(new Configuration().configure()).create(true , true);
  21. }
  22. @Test
  23. public void testSave() {
  24. PersonEntity person = new PersonEntity();
  25. person.setId(100);
  26. person.setName("路飞");
  27. Session session = HibernateUtil.getSession();
  28. Transaction tx = session.beginTransaction();
  29. session.save(person);
  30. tx.commit();
  31. HibernateUtil.closeSession();
  32. }
  33. @Test
  34. public void testQuery() {
  35. Session session = HibernateUtil.getSession();
  36. session.beginTransaction();
  37. @SuppressWarnings("unchecked")
  38. List<PersonEntity> personList = session.createQuery("select p from PersonEntity p").list();
  39. for(PersonEntity eachPerson : personList) {
  40. System.out.println(eachPerson);
  41. }
  42. session.getTransaction().commit();
  43. HibernateUtil.closeSession();
  44. }
  45. }

项目结构如下图所示:

对了,注意一下,在上面的pom.xml中,没有看到数据库驱动包,我用的是SQL Server,直接将jar包放到了项目的lib文件夹下,而从网上查的说,使用scope引入本地的包,试了一下,好像不行,等我再试一试。

5. 测试

如果你现在运行JUnit测试的话,是不会成功的,昨天晚上就是这个原因,提示说找不到hibernate.cfg.xml,

后来发现,在target文件夹下,并没有生成class文件,配置文件也没有,这样当然运行不成功

这里需要执行两个命令

使用CMD窗口,进入当前项目的根目录:

第一条命令:输入mvn compile

注意:这里一定要成功啊,即   BUILD SUCCESS

第二条命令:输入mvn test-compile

同样的,这里一定要 BUILD SUCCESS

这样的话,再一次运行测试程序,就可以成功了!

Maven的学习资料收集--(六) 构建Hibernate项目

时间: 2024-10-06 20:49:16

Maven的学习资料收集--(六) 构建Hibernate项目的相关文章

Maven的学习资料收集--(四)使用Maven构建Web项目-测试

2014-08-04 23:21 2人阅读 评论(0) 收藏 编辑 删除 目录(?)[+] [-] 在srcmainjava下新建一个Servlet 修改webxml 新建JSP 测试 在上一篇博客里,我们使用Maven构建了一个Web项目,我们在这里写一个简单的Servlet,测试一下. 1.在src/main/java下,新建一个Servlet [java] view plaincopyprint? <span style="font-weight: normal;">

Maven的学习资料收集--(三)使用Maven构建Web项目

新建Maven项目 File - New - Other 选择Maven Project 单击Next 保持默认即可单击Next 选择Archetype为 web app单击Next 输入一些必要信息单击Finish 项目结构如下图 配置项目 在项目上右键单击添加Source Folder 修改Build Path 配置 将项目转换为Dynamic Web Project 设置部署程序集Web Deployment Assembly 从网上查了一些资料,才算明白(也就是怎么操作吧),怎么使用Ma

Maven的学习资料收集--(七) 构建Spring项目

在这里,使用Maven构建一个Spring项目 构建单独项目的话,其实都差不多 1. 新建一个Web项目 参考之前的博客 2.修改 pom.xml,添加Spring依赖 [html] view plaincopy <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=&

Maven的学习资料收集--(十)Myeclipse下创建Maven的Web项目

先要在MyEclipse中对Maven进行设置: 到此Maven对MyEclipse的支持设置完毕. 下面我们在MyEclipse中创建一个Maven标准的Web工程: New --> Web Project 到此为止一个Maven标准的Web工程创建成功了. 添加Maven的标准目录: 右键单击项目名称-->New-->Source Folder 到此为止添加Maven的契约目录完毕. 右键单击项目名称-->Build Path-->Configure Build Path

Maven的学习资料收集--(一)环境搭建

这几天在做项目的时候用到了maven,但是自己没有从来没有接触过,所以咋网上找资料,终于找到了一下的资料,这个是别人总结的,我只是转载过来积累.请尊重原创. 官网地址:http://maven.apache.org/ 下载地址:http://download.csdn.net/detail/jolingogo/5235528 接下来是,配置环境变量: 1.将压缩包解压 2.配置环境变量 M2_HOME:D:\JavaApp\apache-maven-3.0.5(改成自己的哦) 在Path中加入:

Maven的学习资料收集--(二)安装m2eclipse插件

在Eclipse中可以安装Maven插件,可以更方便的使用: 官网地址:http://www.eclipse.org/m2e/ 可以在线安装或者离线下载,之前在线安装总是失败,可能是网速的原因,找到了一个离线包,可以用link方式安装. 离线包:http://download.csdn.net/detail/jolingogo/5253225 在线安装就不说了,link方式的话: 1.将离线包解压到一个目录,如:D:\\m2eclipse 2.在Eclipse的根目录下,有一个dropins文件

【Android XMPP】 学习资料收集贴(持续更新)

系列一: 基于xmpp openfire smack开发之openfire介绍和部署[1] 基于xmpp openfire smack开发之smack类库介绍和使用[2] 基于xmpp openfire smack开发之Androidclient开发[3] 基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4] 系列二: Android平台下基于XMPP的IM研究(一) Android平台下基于XMPP的IM研究(二 MultiUserChat 聊天室)

JVM学习资料收集

JVM实用参数(一)JVM类型以及编译器模式 http://ifeve.com/useful-jvm-flags-part-1-jvm-types-and-compiler-modes-2/ JVM实用参数(二)参数分类和即时(JIT)编译器诊断 http://ifeve.com/useful-jvm-flags-part-2-flag/ JVM实用参数(三)打印所有XX参数及值 http://ifeve.com/useful-jvm-flags-part-3-printing-all-xx-f

OpenResty学习资料收集

1.nginx-lua-module使用 https://github.com/iresty/nginx-lua-module-zh-wiki https://github.com/openresty/lua-nginx-module#readme 2.openresty最佳实践 https://www.gitbook.com/book/moonbingbing/openresty-best-practices/details 3.openresty学习资源 https://github.com