博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hibernate学习
阅读量:2504 次
发布时间:2019-05-11

本文共 4815 字,大约阅读时间需要 16 分钟。

现将资料整理出来,过几天不要忘记了

1.启动java自带的数据库
2.对关系表test进行对象化处理
3.试创建类Test 向表插入一条数据
4对对象化的表进行配置,配置Account.hbm.xml
5.配置hibernate.cfg.xml进行ORMapping
6.创建使用hibernate的类AccountTest

[@more@]

现将资料整理出来,过几天不要忘记了

1.启动java自带的数据库
startHsql.bat
内容如下:start java -classpath ../lib/hsqldb.jar org.hsqldb.Server

可以通过db brower查看相关信息,然后配置HSQL驱动
----------------------
driver:HSQLDB
添加驱动libhsqldb.jar
jdbc:hsqldb:hsql://localhost
url jdbc:hsqldb:hsql://localhost
sa
OK!
------------------------------------------------------------
创建表test
id INTERGER PK AI
name varchar 24
insert into account(id,name) values (1,'marry');
select * from account
commit
-------------------------------------------------------------

2.对关系表test进行对象化处理

package com.test;

import java.io.Serializable;

@SuppressWarnings("serial")

public class Account implements Serializable {
/** 对象唯一标识 */
private Integer id;
private String name;
//~==========================constructor
public Account() {
}
public Account(String name) {
this.name = name;
}

//~==============================setter & getter

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;
}
}
3.试创建类Test 向表插入一条数据
package com.test;

import java.sql.Connection;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Test {

/**

* @param args
*/
public static void main(String[] args) throws Exception
{
//step1 load driver
Class.forName("org.hsqldb.jdbcDriver");
//step2 create connection
Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost", "sa", "");
//step3 prepare statement
Statement stat = conn.createStatement();
stat.execute("insert into test(name) values('sunrey')");
//step4 get resultset
ResultSet rs = stat.executeQuery("select * from test");
while (rs.next())
{System.out.println("id="+rs.getString(1));}
//step5 close......
rs.close();
stat.close();
conn.close();
}

}

4.对对象化的表进行配置,配置文件Account.hbm.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
ttp://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >

5.配置hibernate.cfg.xml进行ORMapping///

<?xml version='1.0' encoding='UTF-8'?>

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

<!-- Generated by MyEclipse Hibernate Tools. --&gt

<!-- SessionFactory配置 --&gt
<!-- 数据库配置 --&gt
jdbc:hsqldb:hsql://localhost
org.hsqldb.jdbcDriver
sa

<!-- 数据库方言,每个数据库都有其对应的dialect以匹配其平台特性 --&gt

org.hibernate.dialect.HSQLDialect

<!-- 事务管理类型,这里我们使用JDBCTransactionFactory(默认值) --&gt

org.hibernate.transaction.JDBCTransactionFactory
<!-- 关闭二级缓存 --&gt
org.hibernate.cache.NoCacheProvider

<!-- 是否将运行期生成的sql输出到日志以供调试 --&gt

true
<!-- 映射文件,必须包含相对于classpath根的全路径名 --&gt

/*********************************************

--------------------------------------------------------------
导入库
属性 ---javabuilderpath add jars
修改hibernate.config.xml
生成BEAN
修改BEAN配置 做mapping
(注意:类型要用对象如integer)
---------------------------------------------------------------
wtp-all-in-one-sdk-R-1.5.1-200609230508-win32.zip
---------------------------------------------------------------
step1 prepare sessionfactory
step2 create session

---------------------------------------------------------------

autoboxing
javabean---entry
attach
dettach
----------------------------------------------------------------

**********************************************/

6.创建使用hibernate的类AccountTest:

package com.test;

import org.hibernate.HibernateException;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import java.util.List;

public class AccountTest {

public static void main(String[] args){
Account user = new Account(); //Transient
user.setName("vincent");
//Step 1: prepare SessionFactory
SessionFactory sessionFactory=new Configuration().configure().buildSessionFactory();
//Step 2: create session
Session session=sessionFactory.openSession();
Transaction trx = null;
Integer id=null;
try {
//开启事务
trx = session.beginTransaction();
id = (Integer) session.save(user); //Persistent
System.out.println("id:" + id);
System.out.println("user.getId():" + user.getId());
user.setName("jacky");
//提交事务
trx.commit();
} catch (HibernateException e) {
e.printStackTrace();
//验证失败
//Assert.fail(e.getMessage());
//回滚事务
if (trx != null)
trx.rollback();
}
Account user1 = (Account) session.load(Account.class, id);
System.out.println(user1.getName());
//assertEquals("vincent", user.getName());
List result = session.createQuery("from Account").list();
for (Object acct:result){
System.out.println(((Account)acct).getName());
}
}

}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/219138/viewspace-913268/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/219138/viewspace-913268/

你可能感兴趣的文章
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>
Java:按值传递还是按引用传递详细解说
查看>>
Java中Synchronized的用法
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
接口技术原理
查看>>
五大串口的基本原理
查看>>
PCB设计技巧与注意事项
查看>>
linux进程之间通讯常用信号
查看>>
main函数带参数
查看>>
PCB布线技巧
查看>>
关于PCB设计中过孔能否打在焊盘上的两种观点
查看>>
PCB反推理念
查看>>
京东技术架构(一)构建亿级前端读服务
查看>>
php 解决json_encode中文UNICODE转码问题
查看>>
LNMP 安装 thinkcmf提示404not found
查看>>
PHP empty、isset、innull的区别
查看>>
apache+nginx 实现动静分离
查看>>
通过Navicat远程连接MySQL配置
查看>>