Maven的学习资料收集--(六) 构建Hibernate项目
前面我们使用Maven构建了Struts2项目,这里我们来试一下Hibernate项目:
这里的例子,大体框架应该是正确的,但是,对于Maven的很多约定都没有掌握,估计包的命名都不是非常好,等以后,理解深刻了再改吧
1. 构建一个基本的Web项目
这里请参考前面的博客,一样的
2. 添加依赖,修改pom.xml
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.deppon.demo</groupId>
- <artifactId>test03</artifactId>
- <packaging>war</packaging>
- <version>0.0.1-SNAPSHOT</version>
- <name>test03 Maven Webapp</name>
- <url>http://maven.apache.org</url>
- <!-- 属性配置 -->
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- <scope>test</scope>
- </dependency>
- <!-- 添加Hibernate依赖 -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>3.6.5.Final</version>
- </dependency>
- <!-- 添加Log4J依赖 -->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.16</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- <version>1.6.1</version>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-nop</artifactId>
- <version>1.6.4</version>
- </dependency>
- <!-- 添加javassist -->
- <dependency>
- <groupId>javassist</groupId>
- <artifactId>javassist</artifactId>
- <version>3.11.0.GA</version>
- </dependency>
- </dependencies>
- <build>
- <finalName>test03</finalName>
- </build>
- </project>
在保存的时候,Maven会自动从库中各种包下载到本地,如果有异常的话,可以尝试手动下载
3. 添加hibernate.cfg.xml和log4j.properties资源文件
注意,资源文件的话,根据约定,需要放在src/main/resources文件夹下
hibernate.cfg.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
- <hibernate-configuration>
- <session-factory>
- <!-- Database connection settings -->
- <property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
- <property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=Demo</property>
- <property name="connection.username">ygy</property>
- <property name="connection.password">shishi</property>
- <property name="javax.persistence.validation.mode">none</property>
- <property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
- <property name="current_session_context_class">thread</property>
- <property name="show_sql">true</property>
- <property name="format_sql">true</property>
- <property name="hbm2ddl.auto">update</property>
- <mapping class="com.deppon.test03.entity.PersonEntity"/>
- </session-factory>
- </hibernate-configuration>
log4j.properties
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.out
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- log4j.rootLogger=debug, stdout
- log4j.logger.org.hibernate.tool.hbm2ddl=debug
4. 新建一个实体类,测试一下
PersonEntity.java
- package com.deppon.test03.entity;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- import javax.persistence.Table;
- @Entity
- @Table(name = "t_person")
- public class PersonEntity implements java.io.Serializable {
- private static final long serialVersionUID = -4376187124011546736L;
- private Integer id;
- private String name;
- @Id
- public Integer getId() {
- return id;
- }
- public void setId(Integer id) {
- this.id = id;
- }
- @Column(length = 50 , nullable = false , unique = true)
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public String toString() {
- return "PersonEntity [id=" + id + ", name=" + name + "]";
- }
- }
HibernateUtil.java
- package com.deppon.test03.util;
- import org.apache.log4j.Logger;
- import org.hibernate.HibernateException;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- public class HibernateUtil {
- /** ThreadLocal Session Map */
- public static final ThreadLocal<Session> SESSIONMAP = new ThreadLocal<Session>();
- private static final SessionFactory sessionFactory;
- private static final Logger LOGGER = Logger.getLogger(HibernateUtil.class);
- static {
- try {
- LOGGER.debug("HibernateUti.static - loading cofig");
- sessionFactory = new Configuration().configure("hibernate.cfg.xml")
- .buildSessionFactory();
- LOGGER.debug("HibernateUtil.static - end");
- } catch (Throwable ex) {
- ex.printStackTrace();
- LOGGER.error("HibernateUti error : ExceptionInInitializerError");
- throw new ExceptionInInitializerError(ex);
- }
- }
- private HibernateUtil() {
- }
- public static Session getSession() throws HibernateException {
- Session session = SESSIONMAP.get();
- if(session == null) {
- session = sessionFactory.openSession();
- SESSIONMAP.set(session);
- }
- return session;
- }
- public static void closeSession() throws HibernateException {
- Session session = SESSIONMAP.get();
- SESSIONMAP.set(null);
- if(session != null) {
- session.close();
- }
- }
- }
测试类 ModelTest.java
- package com.deppon.test03.model;
- import java.util.List;
- import org.hibernate.Session;
- import org.hibernate.Transaction;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.tool.hbm2ddl.SchemaExport;
- import org.junit.Assert;
- import org.junit.Test;
- import com.deppon.test03.entity.PersonEntity;
- import com.deppon.test03.util.HibernateUtil;
- public class ModelTest {
- @Test
- public void testGetSession() {
- Session session = HibernateUtil.getSession();
- Assert.assertNotNull(session);
- HibernateUtil.closeSession();
- }
- @Test
- public void testExport() {
- new SchemaExport(new Configuration().configure()).create(true , true);
- }
- @Test
- public void testSave() {
- PersonEntity person = new PersonEntity();
- person.setId(100);
- person.setName("路飞");
- Session session = HibernateUtil.getSession();
- Transaction tx = session.beginTransaction();
- session.save(person);
- tx.commit();
- HibernateUtil.closeSession();
- }
- @Test
- public void testQuery() {
- Session session = HibernateUtil.getSession();
- session.beginTransaction();
- @SuppressWarnings("unchecked")
- List<PersonEntity> personList = session.createQuery("select p from PersonEntity p").list();
- for(PersonEntity eachPerson : personList) {
- System.out.println(eachPerson);
- }
- session.getTransaction().commit();
- HibernateUtil.closeSession();
- }
- }
项目结构如下图所示:
对了,注意一下,在上面的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项目的更多相关文章
- Maven的学习资料收集--(九) 构建SSH项目以及专栏maven
在这里整合一下,使用Maven构建一个SSH项目 1.新建一个Web项目 可以参照前面的博客 2.添加依赖,修改pom.xml <project xmlns="http://maven ...
- Maven的学习资料收集--(八) 构建MyBatis项目
在这里,写一下,怎么使用Maven构建MyBatis项目. 1. 新建一个Web项目 可以参考前面的博客 2. 修改pom.xml,添加MyBatis依赖 <project xmlns=&quo ...
- Maven的学习资料收集--(七) 构建Spring项目
在这里,使用Maven构建一个Spring项目 构建单独项目的话,其实都差不多 1. 新建一个Web项目 参考之前的博客 2.修改 pom.xml,添加Spring依赖 <project xml ...
- Maven的学习资料收集--(十)Myeclipse下创建Maven的Web项目
先要在MyEclipse中对Maven进行设置: 到此Maven对MyEclipse的支持设置完毕. 下面我们在MyEclipse中创建一个Maven标准的Web工程: New --> We ...
- Maven的学习资料收集--(五)使用Maven构建Struts2项目
在前两篇博客中,使用Maven构建了Web项目,在这篇博客中写一下,怎样构建一个简单的Struts2项目. 在准备过程中发现,要使用好Maven,个人觉得要好好利用这两个网站: http://mvnr ...
- Maven的学习资料收集--(三)使用Maven构建Web项目
新建Maven项目 File - New - Other 选择Maven Project 单击Next 保持默认即可单击Next 选择Archetype为 web app单击Next 输入一些必要信息 ...
- Maven的学习资料收集--(四)使用Maven构建Web项目-测试
2014-08-04 23:21 2人阅读 评论(0) 收藏 编辑 删除 目录(?)[+] [-] 在srcmainjava下新建一个Servlet 修改webxml 新建JSP 测试 在 ...
- Maven的学习资料收集--(一)环境搭建
这几天在做项目的时候用到了maven,但是自己没有从来没有接触过,所以咋网上找资料,终于找到了一下的资料,这个是别人总结的,我只是转载过来积累.请尊重原创. 官网地址:http://maven.apa ...
- Maven的学习资料收集--(二)安装m2eclipse插件
在Eclipse中可以安装Maven插件,可以更方便的使用: 官网地址:http://www.eclipse.org/m2e/ 可以在线安装或者离线下载,之前在线安装总是失败,可能是网速的原因,找到了 ...
随机推荐
- mybatis---demo1--(缓存)----bai
News-mapper.xml 配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ma ...
- js插件库+bootstrap
1.Chart.js 官网地址:http://chartjs.cn/ 2.优秀的bootstrap模板推荐 官网地址:http://bootswatch.com 3.wow+animate+js插件库 ...
- C#调用ODBC连接SQL Server数据库的存储过程
OdbcConnection con = new OdbcConnection("Driver={SQL Server};server=PC-200201070359;uid=sa;pwd= ...
- ansible的使用
ansible主要分为单条命令和组命令(即配置后缀为名yml的文件,使用ansible-playbook执行)的使用,以下分别对两者进行说明.如不会安装ansible,请参考我的文章 centos7安 ...
- maven 打JAR包资源文件指定路径与文件读取
1.配置RESOURCES节点 有时会遇到maven打包后找不到资源文件了,其实这时候路径发生了变化,为了确保打包后路径不发生变化,指定一个固定的路径,请看下面配置 <build> ... ...
- Hadoop的namenode和secondnamenode分开部署在不同服务器
一.系统环境: Hadoop 0.20.2.JDK 1.6.Linux操作系统 二.使用背景 网上关于Hadoop的集群配置,很多情况下,都是把namenode和secondnamenode部署在 ...
- 9、perldoc文档阅读器
转载:http://www.cnblogs.com/nkwy2012/p/6016320.html 一般来说,将文档的名称作为参数传递给perldoc命令,即可查阅该文档.比如下面,给定文档名称per ...
- Spring入门第三课
属性注入 属性注入就是通过setter方法注入Bean的属性值或依赖的对象. 属性植入使用<property>元素,使用name属性指定Bean的属性名称,value属性或者<val ...
- Sharepoint2013商务智能学习笔记之Excel Service服务配置(四)
第一步,新建Excel Service应用程序 第二步,管理中心,在应用程序管理区域点管理服务应用程序,进入应用程序管理列表, 再点击刚才新建好的ExcelServiceApplication进入ex ...
- C/C++中的static用法总结
C中: 1. static修饰函数中的变量(栈变量):改变变量的生存期,作用域不变仍为所在函数. 只被初始化一次. 2. static修饰全局变量:限制全局变量只能被模块内访问,不可以在别的模块中用e ...