简单介绍

  一个maven项目,使用hibernate框架,实现向mysql数据库中添加和获取操作,其他操作也是类似

  如果你没有hibernate,那么也不要紧,这里主要介绍如何在一个maven项目中引入框架

项目流程

  1、新建一个maven项目,项目命名为maven-ch04

  2、添加相关依赖,如junit、hibernate、mysql驱动、log4j

  pom.xml文件添加以下依赖(如果你是第一次加这些依赖,那么需要等一会,这时候IDEA会下载一些相关文件)

  如果你不知道如何查找依赖,可以查看maven(02)

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.10.Final</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies>

  3、在mysql数据可以新建一个数据库,名称为maven

  4、新建实体类User(注意新建包)

package com.simfg.maven.model;
/**
* Created by SimFG on 2017/5/14.
*/
public class User {
private int id;
private String name;
private String password; public User() {
} public User(String name, String password) {
this.name = name;
this.password = password;
} public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}

  5、在resources文件夹下新建hibernate.cfg.xml(如果没有resource文件夹,则在src下新建;注意修改mysql连接密码;如果你新建数据库名称不为maven,那么你也需要修改连接连接数据库名称)

<?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="connection.username">root</property>
<!-- mysql的连接密码 -->
<property name="connection.password">xxxxx</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql:///maven?characterEncoding=UTF8&amp;userSSL=true</property> <!-- 配置hibernate的信息 -->
<!-- hibernate所使用的数据库方言 -->
<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 执行操作控制台是否打印sql -->
<property name="show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="format_sql">true</property>
<!-- 指定自动生成策略 -->
<property name="hbm2ddl.auto">update</property> <!-- 指定关联的.hbm.xml -->
<mapping resource="com/simfg/maven/model/User.hbm.xml"/> </session-factory>
</hibernate-configuration>

  6、在该目录下新建一个log4j.properties,内容如下

  如果你想详细了解log4j如何配置,可以参照log4j详解

log4j.rootLogger=WARN, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN

  7、在User.java这个文件的同一目录下新建一个User.hbm.xml文件(注意修改class标签中name属性,改成你自己命名的包)

<?xml version="1.0"?>
<!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.simfg.maven.model.User" table="USER">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" />
</property>
</class>
</hibernate-mapping>

  8、编写一个HibernateUtil.java文件,注意建立相应的包

package com.simfg.maven.util;

import com.simfg.maven.model.User;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.Metadata;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; /**
* Created by SimFG on 2017/5/14.
*/
public class HibernateUtil { private static Session session;
private static Transaction transaction;
private static SessionFactory sessionFactory; public static void startup(){
// 1:创建一个sessionFactory对象
StandardServiceRegistry standardRegistry = new StandardServiceRegistryBuilder().configure().build();
Metadata metadata = new MetadataSources(standardRegistry).getMetadataBuilder()
.applyImplicitNamingStrategy(ImplicitNamingStrategyComponentPathImpl.INSTANCE).build();
sessionFactory = metadata.getSessionFactoryBuilder().build(); // 2:创建一个session对象
session = sessionFactory.openSession();
// 3:开启事务
transaction = session.beginTransaction();
} private static void closeup(){
// 5:提交事务
transaction.commit();
// 6:关闭session
session.close();
// 7:关闭sessionFactory
sessionFactory.close();
} public static void hibernateSave(User user) throws Exception {
startup();
session.save(user);
closeup(); }
public static User hibernateQuery(){
startup();
String sql = "FROM User u WHERE u.name = ?";
User user = (User) session.createQuery(sql).setParameter(0,"sim").uniqueResult();
closeup();
return user;
}
}

  9、编写一个DAO,即UserDao.java

package com.simfg.maven.dao;

import com.simfg.maven.model.User;
import com.simfg.maven.util.HibernateUtil; /**
* Created by SimFG on 2017/5/14.
*/
public class UserDao{ public void addUser() {
try {
HibernateUtil.hibernateSave(new User("sim","123456"));
} catch (Exception e) {
e.printStackTrace();
}
} public User loadByUsername() {
return HibernateUtil.hibernateQuery();
}
}

  10、测试,在test中新建一个TestUserDao.java

import com.simfg.maven.dao.UserDao;
import com.simfg.maven.model.User;
import org.junit.Before;
import org.junit.Test; /**
* Created by SimFG on 2017/5/14.
*/
public class TestUserDao {
private UserDao userDao; @Before
public void setup() {
userDao = new UserDao();
} @Test
public void add(){
userDao.addUser();
System.out.println(userDao.loadByUsername().getName());
}
}

 运行add,结果如下图

  如果你运行项目出现xxx.hbm.xml未找到

  在pom.xml文件加一下代码

<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>

maven(04)--一个简单的项目的更多相关文章

  1. 如何用Maven创建一个普通Java项目

    一下内容包括:用Maven创建一个普通Java项目,并把该项目转成IDEA项目,导入到IDEA,最后把这个项目打包成一个jar文件. 有时候运行mvn命令失败,重复运行几次就OK了,无解(可能因为网络 ...

  2. 用IntelliJ IDEA学习Spring--创建一个简单的项目

    这段时间想学习一下Spring,其实之前学过Spring,只是有些忘记了.而且之前学的时候是适用eclipse学习的,现在好像对IntelliJ这个工具使用挺多的,现在就学习一下这个工具的用法,顺便复 ...

  3. 软件----- idea 配置创建一个简单javase项目

    1.显示工具栏和工具按钮,勾选上 如图,在左侧会增加对应的 2.设置项目结构,选择jdk 点击new  选择需要jdk 3.创建一个简单的java文件,和eclipse与myeslipse 差不多, ...

  4. vue-cli安装以及创建一个简单的项目(二)(vuex使用、发行一个简单的app)

    1.vuex的使用 vuex是vue的状态管理中心,vuex来保存我们需要管理的状态值,值一旦被修改,所有引用该值的地方就会自动更新,常用于: 1.多个视图依赖同一状态(l例:菜单导航) 2.来自不同 ...

  5. vue-cli安装以及创建一个简单的项目(一)(Node\npm\webpack简单使用)

    1.关系介绍 1.简单的说 Node.js 就是运行在服务端的 JavaScript. 2.NPM是随同NodeJS一起安装的包管理工具(新版的nodejs已经集成了npm),能解决NodeJS代码部 ...

  6. maven创建一个简单的web项目

    1.确认maven插件和配置在eclipse中已经完成 如果没完成,可参考这篇博客:http://www.cnblogs.com/mmzs/p/8191979.html 2.在eclipse中用mav ...

  7. Maven新建一个Spring MVC项目

    新建一个Maven项目,选择archetypes为maven-archetype-webapp,相关的名称按个人习惯取,我这里取Group Id:moonlit-groupArtifact Id:mo ...

  8. 【Django】01_创建一个简单的项目

    1.创建Django项目 点击:file-->new project,出现下面的对话框.选择Django栏目,输入项目名称, 选择python解释器版本,点击create创建. Django将自 ...

  9. 使用Maven开发一个简单的SpringData

    1:创建Maven项目 2:添加依赖(修改pom.xml为以下代码) <project xmlns="http://maven.apache.org/POM/4.0.0" x ...

随机推荐

  1. 前端-chromeF12 谷歌开发者工具详解 Network篇

    开发者工具初步介绍 chrome开发者工具最常用的四个功能模块: Elements:主要用来查看前面界面的html的Dom结构,和修改css的样式.css可以即时修改,即使显示.大大方便了开发者调试页 ...

  2. http错误状态码

    http://www.kaiyuanba.cn/html/1/131/226/4258.htm 状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:1xx:指示信息--表示请求已接收 ...

  3. 51nod2004 终结之时 (支配树+树剖+树链的并)

    link 我永远喜欢洛天依 给定一张图世末积雨云,你需要维护其支配树: 单点修改,子树修改,树链修改 子树求和,树链求和,多条树链的并集求和 撤销之前的操作 可以先用 Lengauer-Tarjan ...

  4. 数据库--sql文件

    sql 脚本是包含一到多个 sql 命令的 sql 语句集合 使用 Linux: mysqldump 命令 1.导出数据和表结构: mysqldump -u 用户名 -p 数据库名称 > nam ...

  5. 在Keras中使用tensorboard可视化acc等曲线

    1.使用tensorboard可视化ACC,loss等曲线 keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq= 0 , wri ...

  6. [转] kerberos安装配置与使用

    [From] https://blog.csdn.net/lovebomei/article/details/79807484 1.Kerberos协议: Kerberos协议主要用于计算机网络的身份 ...

  7. apt 命令大全

    #1. 搜索包 sudo apt-cache search package #2.获取包的相关信息,如说明,大小,版本. sudo apt-cache show package #3.了解包的依赖 s ...

  8. google浏览器安装不上的绝望经历

    手贱把google的一些文件删除了,整个浏览器都没法打开 决定重装下,但是连卸载的功能都无法打开了 于是决定上网重新下载了个安装包,发现安装包都打不来 很绝望,查了很多资料 很多人说要删除注册表的东西 ...

  9. http请求全过程

    第一步:浏览器生成http请求信息(第五层) 1.分解url 当用户输入网址时,浏览器会以一定的规则分解网址, 以 http://www.cemabenteng.com/dir/index.html ...

  10. 2019.04.17 读书笔记 checked与unchecked

    在普通的编程中,我们是很容易去分析数据的大小,然后给出合理的类型,但是在很多数据库的累计中,缺存在很多隐患,特别是研发时,数据量小,求和也不会溢出,当程序运行几年后,再来一次大求和,隐形的BUG就出来 ...