Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)

时间:2022-09-06 23:39:20

Hibernate介绍:Hibernate是一种“对象-关系型数据映射组件”,它使用映射文件将对象(object)与关系型数据(Relational)相关联,在Hibernate中映射文件通常以".hbm.xml"作为后缀。

包:com.cn.beans

与数据库表t_user(id主键,name)对应的工程中POJO代码(Javabean):Tuser.Java

package com.cn.beans;
import java.io.Serializable; import javax.annotation.Generated; public class Tuser implements Serializable { /**
*
*/
private static final long serialVersionUID = 1L; private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }

POJO与数据库表对应的映射文件:Tuser.hbm.xml

<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="com.cn.beans">
<class name="com.cn.beans.Tuser" table="t_user">
<id name="id" column="id" type="int">

</id>
<property name="name" column="name" type="string">
</property>
</class>
</hibernate-mapping>

包:com.cn.hibernate.test:HibernateBaseTest.java代码:

package com.cn.hibernate.test;

import java.util.List;

import junit.framework.Assert;
import junit.framework.TestCase; import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration; import com.cn.beans.Tuser; public class HibernateBaseTest{
Session session=null; //初始化hibernate的Session
protected void setUp(){
try{
Configuration config=new Configuration().configure();
SessionFactory sessionFactory=config.buildSessionFactory();
session = sessionFactory.openSession();
System.out.println("连接数据库成功!");
}catch(HibernateException e){
e.printStackTrace();
System.out.println("连接数据库失败!");
}
} public static void main(String[] args) {
HibernateBaseTest j = new HibernateBaseTest();
j.setUp();
//j.testInsert();
j.testSelect();
}
//teardown()方法用于关闭用setUp打开的hibernate中的Session;
protected void teardown(){
try{
session.close();
System.out.println("关闭数据库");
}catch(HibernateException e){
e.printStackTrace();
}
} public void testInsert(){
Transaction tran=null;
try{
tran=session.beginTransaction();
Tuser user=new Tuser();
user.setId(8);
user.setName("Emma11");
session.save(user);
session.flush();
tran.commit();
session.close();
}catch(HibernateException e){
e.printStackTrace();
if(tran!=null){
try{
tran.rollback();
}catch(HibernateException e1){
e1.printStackTrace();
}
}
}
} //对象读取(select)测试,请保证运行之前数据库中已经存在name='Emma11'的记录 public void testSelect(){
//setUp();
String hql="from Tuser where name='Emma11'";
try{
List userList=session.createQuery(hql).list();
Tuser user=(Tuser)userList.get(0);
//Assert.assertEquals(user.getName(), "Emma11");
System.out.println("用户为:"+user.getId()+" "+user.getName());
}catch(HibernateException e){
e.printStackTrace();
//Assert.fail(e.getMessage());
}
teardown();
}
}
测试类:JunitTest.java

package com.cn.hibernate.test;
import org.junit.Test;

public class JunitTest {

    @Test
public void testInsert() {
} @Test
public void testselect() {
} }

该包对应的文件:

1.hibernate.cfg.xml(与sql server2008数据库进行连接的配置文件)

<?xml version="1.0"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--显示执行的SQL语句-->
<property name="hibernate.show_sql">true</property>
<!--连接字符串-->
<property name="hibernate.connection.url">
jdbc:sqlserver://192.168.254.133:1433;DatabaseName=sample
</property>
<!--连接数据库的用户名-->
<property name="hibernate.connection.username">sa</property>
<!--数据库用户密码-->
<property name="hibernate.connection.password">123456</property>
<!--数据库连接池的大小-->
<property name="hibernate.connection.pool.size">20 </property>
<!--jdbc.fetch_size是指Hibernate每次从数据库中取出并放到JDBC的Statement中的记录条数。Fetch Size设的越大,读数据库的次数越少,速度越快,Fetch Size越小,读数据库的次数越多,速度越慢-->
<property name="jdbc.fetch_size">50</property>
<!--数据库驱动-->
<property name="hibernate.connection.driver_class">
com.microsoft.sqlserver.jdbc.SQLServerDriver
</property>
<!--选择使用的方言-->
<property name="dialect">
org.hibernate.dialect.SQLServerDialect
</property>

<!-- <property name="connection.pool_size">0</property> -->
<property name="c3p0.max_size">2000</property>
<property name="c3p0.min_size">200</property>
<property name="c3p0.timeout">5000</property>
<property name="c3p0.validate">false</property>
<!--
<property name="hibernate.transaction.factory_class">
net.sf.hibernate.transaction.JDBCTransactionFactory
</property>
-->
<!-- Enable Hibernate's automatic session context management -->
<!--<property name="current_session_context_class">thread</property>

--><property name="connection.autocommit">true</property>

<!--在启动时删除并重新创建数据库-->
<mapping resource="com/cn/beans/Tuser.hbm.xml"/>
</session-factory>
</hibernate-configuration>

结果:插入记录

Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)

查询记录:

Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)

Hibernate框架的基本搭建(一个小的java project的测试向数据库中插入和查询数据的功能)的更多相关文章

  1. Spring框架——事务管理方式搭建一个小的项目

    学习Spring框架,通过事务管理的方式搭建一个小的项目,该项目可以查询对数据库中的图书库存数量进行修改. 首先,使用MVC分层的设计模式思想搭建项目目录结构. 此部分代码源码之中都有相关注释,所以尽 ...

  2. 搭建一个完整的Java开发环境

    搭建一个完整的Java开发环境 作为一个Java程序员,配置一个java开发环境是必备的技能,今天给广大菜鸟初学者补上一课.环境的配置,大概就分三个1,JDK 2,Tomcat(或者其他的)3,ecl ...

  3. 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  4. hibernate 4&period;3 在使用获取数据获取不到数据库中最新变更的数据问题解决

    hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决,应该是因为缓存问题 问题过程和现象: 查询一个数据列表=>数据库中手动update了数据=>刷新页面,数据 ...

  5. (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

  6. 【mybatis】service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据【事务的问题】

    问题描述: service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据 ...

  7. 以使用QSqlQuery向数据库中插入数据为例,做一个小结

    背景: 最近在使用Qt+SQLite写一个本地数据库管理程序(使用者不懂SQL),在写向数据库中插入数据的 相关的函数时,我遇到了几个问题(暂时就这些): 1.向指定字段插入指定数据时,读取到的数据都 ...

  8. MyBatis框架的insert节点-向数据库中插入数据

    需求:使用mybatis框架中的insert元素节点向数据库中插入数据 UserMapper.xml UserMapper.java 编写测试方法: @Test public void testAdd ...

  9. 2&period;0、Hibernate框架的简单搭建

    一.Hibernate:是一个开放源代码的对象关系映射框架,对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句 ...

随机推荐

  1. 【leetcode】Evaluate Reverse Polish Notation(middle)

    Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, -, ...

  2. Java基础&lpar;33&rpar;&colon;StringBuilder的方法与应用实例(String相关类)

    Java 中的 StringBuilder 类的常用方法 重要的事情说三遍: 在需要频繁对字符串进行修改操作时使用 StringBuilder 的效率比 String 要高 在需要频繁对字符串进行修改 ...

  3. BZOJ1782&colon; &lbrack;Usaco2010 Feb&rsqb;slowdown 慢慢游

    1782: [Usaco2010 Feb]slowdown 慢慢游 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 541  Solved: 326[Sub ...

  4. 编译U-boot时,make&lbrack;1&rsqb;&colon; &ast;&ast;&ast; 没有规则可以创建mkimage&period;o”

    执行完make smdk2440_config 对Uboot重行编译怎么会出现这样的错误 make[1]: Entering directory `/home/win/S3-ARM/Part4/ubo ...

  5. Robot Framework 使用笔记

    条件表达式: Run Keyword If 表达式 执行动作   ... ELSE IF 表达式 执行动作 ... ELSE 执行动作   基础格式见上表,下面是我遇到的坑: 表达式:判断字符串变量是 ...

  6. WP8&period;1小梦词典开发2&colon;百度翻译API使用

    原文出自:http://www.bcmeng.com/api2/ 小梦昨天和大家分享了WP8.1金山词霸API使用方法,今天继续分享windows phone 8.1中百度翻译API的使用方法.和昨天 ...

  7. ArcCore重构-生成&percnt;&lowbar;offset&period;h文件

    基于官方arc-stable-9c57d86f66be,AUTOSAR版本3.1.5 基本问题   ArcCore中,需要生成asm_offset.h和arch_offset.h这两个头文件,定义着代 ...

  8. 2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解

    2018-2019-2 网络对抗技术 20165336 Exp1 PC平台逆向破解 1. 逆向及Bof基础实践说明 1.1 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常 ...

  9. HTTPS过程以及详细案例

    1.HTTPS的过程 1.客户端向服务端发送请求,客户端主要向服务器提供以下信息: 支持的协议版本,比如TLS 1.0版. 一个客户端生成的随机数,稍后用于生成"对话密钥". 支持 ...

  10. Java高并发 -- J&period;U&period;C&period;组件扩展

    Java高并发 -- J.U.C.组件扩展 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 FutureTask Future模式,核心思想是异步调用.和同步调用的区别 ...