hibernate pom mysql_Hibernate+maven+mysql

news/2025/2/25 18:48:45

最近在研究hibernate,想建立一个简单的Hibernate+maven+mysql工程,网上找了一大堆的示例,要么看不懂结构,要么就是缺少必要文件。总之都没有成功,结果无意在一个外文网上找了一个实例,惊叹于人家的排版。也不得不感叹的说下浩瀚的百度里,想找到自己想要的东西是多么难啊!

以下借鉴人家文章和内容并做部分补充,以供初学者一起分享:

(准备工作myeclipse的安装+maven的下载+mysql的配置略过)

1.mysql中建一个mkyong的数据库,其下面新建一个stock的空表格。

//启动mysql服务器

sudo service mysql start

//进入mysql

mysql -uroot -p

输入mysql密码

//创建数据库mkyong

>create database mkyong;

//使用数据库mkyong

>use mkyong;

//在数据库mkyong中创建表stock。请直接copy。

>create table stock (

`STOCK_ID` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`STOCK_CODE` VARCHAR(10) NOT NULL,

`STOCK_NAME` VARCHAR(20) NOT NULL,

PRIMARY KEY (`STOCK_ID`) USING BTREE,

UNIQUE KEY `UNI_STOCK_NAME` (`STOCK_NAME`),

UNIQUE KEY `UNI_STOCK_ID` (`STOCK_CODE`) USING BTREE

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.在myeclipse中创建一个maven工程,自己取一个名字。

New --> Project --> Maven Project --> Next --> 在(New Maven Project )中选择创建一个webapp项目

3.创建源文件(Source Folder)

在 “src/main”目录下创建 “/src/main/resources” , 之后所有的Hibernate’s xml配置文件都将放置在该文件下。

在“src/main”目录下创建“/src/main/java”文件,其中放置java源代码文件。

4.现在该工程的结构看起来如下:

8936e117a819e6e3c4c43c27a600bc66.png

5.添加Hibernate和Mysql依赖

修改项目的pom.xml配置文件,它将支持Hibernate和mysql的连接,Hibernate项目需要dom4j, commons-logging, commons-collections和 cglib文件,mysql需要连接jdbc的文件。将原来的内容更换为如下代码。

文件:pom.xml

4.0.0

com

Hibernate

war

0.0.1-SNAPSHOT

Hibernate Maven Webapp

http://maven.apache.org

junit

junit

3.8.1

test

mysql

mysql-connector-java

5.1.9

dom4j

dom4j

1.6.1

commons-logging

commons-logging

1.1.1

org.hibernate

hibernate

3.2.6.ga

commons-collections

commons-collections

3.2.1

cglib

cglib-nodep

3.1

javax.transaction

jta

1.1

Hibernate

6.创建Hibernate类表映射文件

新建一个Stock.hbm.xml映射文件,路径为:“src/main/resources/com/mkyong/common/Stock.hbm.xml“

文件:Stock.hbm.xml

/p>

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

7.创建一个Stock的POJO  java文件,路径为:“src/main/java/com/mkyong/common/Stock.java”

文件:Stock.java

package com.mkyong.common;

/**

* Model class for Stock

*/

public class Stock implements java.io.Serializable {

private static final long serialVersionUID = 1L;

private Stock stock;

private Integer stockId;

private String stockCode;

private String stockName;

public Stock() {

}

public Stock(String stockCode, String stockName) {

this.stockCode = stockCode;

this.stockName = stockName;

}

public Integer getStockId() {

return this.stockId;

}

public void setStockId(Integer stockId) {

this.stockId = stockId;

}

public String getStockCode() {

return this.stockCode;

}

public void setStockCode(String stockCode) {

this.stockCode = stockCode;

}

public String getStockName() {

return this.stockName;

}

public void setStockName(String stockName) {

this.stockName = stockName;

}

public Stock getOper() {

return stock;

}

public void setOper(Stock stock) {

this.stock = stock;

}

}

8.创建Hibernate配置文件

创建一个Hibernate配置文件,路径为:“src/main/resources/hibernate.cfg.xml“。(注意修改其中的“数据库密码”,mkyong即为数据库的名称)

文件:hibernate.cfg.xml

/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

false

com.mysql.jdbc.Driver

数据库的密码

jdbc:mysql://localhost:3306/mkyong

root

org.hibernate.dialect.MySQLDialect

true

9.创建Hibernate会话文件

创建一个java类型的Hibernate会话文件,路径为:“src/main/java/com/mkyong/persistence/HibernateUtil.java”。

文件:HibernateUtil.java

package com.mkyong.persistence;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class HibernateUtil {

private static final SessionFactory sessionFactory = buildSessionFactory();

private static SessionFactory buildSessionFactory() {

try {

// Create the SessionFactory from hibernate.cfg.xml

return new Configuration().configure().buildSessionFactory();

}

catch (Throwable ex) {

// Make sure you log the exception, as it might be swallowed

System.err.println("Initial SessionFactory creation failed." + ex);

throw new ExceptionInInitializerError(ex);

}

}

public static SessionFactory getSessionFactory() {

return sessionFactory;

}

public static void shutdown() {

// Close caches and connection pools

getSessionFactory().close();

}

}

10.创建测试文件

创建一个名为App.java的测试文件,路径为:“src/main/java/com/mkyong/common/App.java”.

文件:App.java

package com.mkyong.common;

import org.hibernate.Session;

import com.mkyong.persistence.HibernateUtil;

public class App

{

public static void main( String[] args )

{

System.out.println("Maven + Hibernate + MySQL");

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

session.beginTransaction();

Stock stock = new Stock();

stock.setStockCode("4715");

stock.setStockName("GENM");

session.save(stock);

session.getTransaction().commit();

}

}

11.再来看看工程的结构

创建和修改的六个文件结构如下:

d0a33c8ac1c6e65eb33ffa91c900f2c9.png

12.运行结果

运行App.java这个程序,它将会插入一条数据到mysql数据库中去。我们可以在myeclipse中看到该结果,也可以去mysql数据库中查看是否已经插入成功。以下是运行结果:

Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=gasp

Maven + Hibernate + MySQL

.......

五月 24, 2016 5:31:56 上午 org.hibernate.impl.SessionFactoryImpl

信息: building session factory

五月 24, 2016 5:31:56 上午 org.hibernate.impl.SessionFactoryObjectFactory addInstance

信息: Hibernate: insert into mkyong.stock (STOCK_CODE, STOCK_NAME) values (?, ?)


http://www.niftyadmin.cn/n/1895005.html

相关文章

TransactionScope 分布式事务

TransactionScope 分布式事务 TransactionScope是.Net Framework 2.0滞后,新增了一个名称空间。它的用途是为数据库访问提供了一个“轻量级”[区别于:SqlTransaction]的事物。使用之前必须添加对 System.Transactions.dll 的引用。下列代码就是一个正在…

spring-session剖析

2019独角兽企业重金招聘Python工程师标准>>> 一、使用场景 1)一台服务器上的软负载均衡应用 2)分布式应用 二、实现方式 1)session数据存cookie 将session存储至cookie中,每次请求从cookie中读取session,缺…

css学习笔记(一)

position定位 CSS position属性用于指定一个元素在文档中的定位方式。top,right,bottom 和 left 属性则决定了该元素的最终位置。 定位类型 定位元素(positioned element)是其计算后位置属性为 relative, absolute, fixed 或 stic…

bitmap索引 MySQL_( 转 ) 数据库BTree索引、Hash索引、Bitmap位图索引的优缺点

测试于:MySQL 5.5.25当前测试的版本是Mysql 5.5.25只有BTree和Hash两种索引类型,默认为BTree。Oracle或其他类型数据库中会有Bitmap索引(位图索引),这里作为比较也一起提供。BTree索引BTree(多路搜索树,并不是二叉的)是一种常见的…

python学习笔记--变量和运算符

一、变量命名规则 1.字母、数字、下划线组成 2.不以数字开头 3.关键字(也叫保留字),不能用作变量名 4.遵循PEP8命名规范 二、变量赋值 1.赋值符号 2.多重赋值 xy123 3.多变量赋值 x,y,z123 4.交换两个变量的值 可以 a,bb,a 三、运算符 1.算数运算符 : …

mpvue重构小程序之坑点1

对于最近刚做的项目&#xff0c;想着用框架重新架构一遍&#xff0c;方便以后拓展,毕竟现在拓展方向非常大。 目前主要碰到两个略坑的问题&#xff1a; 1&#xff1a; 关于用户授权信息的按钮&#xff0c;原生是以下方式&#xff0c;使用bindgetuserinfo事件 <button stylew…

C/C++中typedef struct和struct的用法

由于对typedef理解不够&#xff0c;因此从网上摘录了一些资料&#xff0c;整理如下&#xff1a; C/C中typedef struct和struct的用法 struct _x1 { ...}x1; 和 typedef struct _x2{ ...} x2; 有什么不同&#xff1f; 其实, 前者是定义了类_x1和_x1的对象实例…

php mysql date 格式化时间_PHP+Mysql如何格式化日期时间?

写过PHPMySQL的程序员都知道有时间差&#xff0c;UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式&#xff0c;Unix时间戳存储、处理方便&#xff0c;但是不直观&#xff0c;格式化日期直观&#xff0c;但是处理起来不如Unix时间戳那么自如。所以有的时候需要互相转换…