Hibernate的第一个例子,用hibernate3.0 数据库用Hsql(因为运行起来简单)
描述我要达到的目的:完成一个最简单的功能:在表User中插入一条记录。
1,新建工程,添加Hibernate支持,可以用Myeclipse自带的加入Hibernate支持功能。不过这里我想自己引入包:<url>http://ikeel.iteye.com/admin/blogs/174641</url>可以参考这篇文章。
然后为了使用Hsql还要引入hsql.jar
2,有这样几个配置文件:
log4j.properties;
hibernate.cfg.xml;
xxx.hbm.xml;
分别说明:
log4j:位于src根目录下,不用多说,但是如果不加入这个配置会报警告的。并且也看不到执行过程中的日志记录。
内容:
log4j.rootLogger=WARN, Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=(%r ms) [%t] %-5p: %c#%M %x: %m%n
log4j.logger.com.genuitec.eclipse.sqlexplorer=DEBUG
log4j.logger.org.apache=WARN
log4j.logger.org.hibernate=WARN
hibernate.cfg.xml:
位于src根目录下。
<?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.driver_class">
org.hsqldb.jdbcDriver
</property>
<property name="connection.url">
jdbc:hsqldb:hsql://localhost
</property>
<property name="connection.username">SA</property>
<property name="connection.password"></property>
<property name="dialect">
org.hibernate.dialect.HSQLDialect
</property>
<property name="show_sql">true</property>
<property name="connection.pool_size">3</property>
<property name="hbm2ddl.auto">create</property>
<property name="current_session_context_class">thread</property>
<mapping resource="dian/ikeel/hibernate/beans/Users.hbm.xml" />
</session-factory>
</hibernate-configuration>
对这个配置文件,有几点需要说明的,就是DTD的引入,可以采用本地文件系统的,也可以采用上面所写的网络地址。
注意:<property name="current_session_context_class">thread</property>
如果缺少这一句时会报错:No CurrentSessionContext configured!
xxx.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>
<class name="dian.ikeel.hibernate.beans.Users" table="User">
<id name="id" column="userid">
<generator class="native"></generator>
</id>
<property name="username" column="name"></property>
<property name="password" column="pwd"></property>
</class>
</hibernate-mapping>
对应的Users.java内容如下:
package dian.ikeel.hibernate.beans;
public class Users {
private long id;
private String username;
private String password;
public Users()
{}
gets & sets ...
}
attention:
<class name="dian.ikeel.hibernate.beans.Users" table="User">需要指定包名。如果不指定就会报错:Could not read mappings from resource: Users.hbm.xml
2,到目前基本的配置已经完成,开始使用操作了。
package dian.ikeel.hibernate.BLL;
import org.hibernate.Session;
import dian.ikeel.hibernate.beans.*;
import dian.ikeel.hibernate.util.hibernateutil.*;
import dian.ikeel.hibernate.util.SessionFactory.*;
public class Entry {
public static void main(String[] args)
{
Session session=HibernateSessionFactory.getSessionFactory().getCurrentSession();
session.beginTransaction();
Users user=new Users();
user.setUsername("ikeel");
user.setPassword("ikeel");
session.save(user);
session.getTransaction().commit();
System.out.println("KKKKKK");
}
其中用到一个Util类:HibernateSessionFactory:
package dian.ikeel.hibernate.util.SessionFactory;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;
public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static Configuration configuration = new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile = CONFIG_FILE_LOCATION;
static {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
private HibernateSessionFactory() {
}
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
System.err
.println("%%%% Error Creating SessionFactory %%%%");
e.printStackTrace();
}
}
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
public static Configuration getConfiguration() {
return configuration;
}
}
}
3,OK了,可以开始使用了,在命令行下进入到 Project/HibernateStudy/data 目录下,先建立data目录吧。然后执行: java -classpath ..\lib\hsql.jar org.hsqldb.Server 数据库就启动了。
开始Run Entry,可以看到都发生了什么.....
4,接下来,我不想用xxx.hbm.xml了,我想试试annotation ....
分享到:
相关推荐
在这个“step by step 06 ssh整合hibernate”教程中,我们将深入探讨如何将这三个强大的组件协同工作。 首先,Struts2是一个基于MVC设计模式的Java Web框架,它负责处理用户请求并展示视图。Struts2提供了一种灵活...
1. **配置文件**:NHibernate的配置文件(hibernate.cfg.xml)包含了数据库连接信息、方言设置、缓存策略等,是初始化NHibernate会话工厂的关键。 2. **映射文件**:使用XML或注解定义对象与数据库表之间的映射关系...
ssh框架搭建step by step (springMVC + spring 5.0.4 + hibernate 5.0.12) 好久不弄web了, 周末心血来潮, 使用较新spirng/hibernate搭建一个ssh框架, 供有需要的同学参考/学习/使用. 使用eclipse开发, 搭建,分三步: ...
在"step by step 09"这个主题中,我们关注的是通过SSH框架进行开发的实际操作,具体涉及以下几个关键知识点: 1. **Struts2框架**:作为表现层,Struts2负责处理HTTP请求,控制应用程序的流程,并将数据展示在视图...
在"step by step ssh 04 Spring 事务控制"这一主题中,我们将深入探讨如何在SSH架构下实现Spring的AOP(面向切面编程)事务管理,以及如何结合Struts和Hibernate进行用户登录实例。 首先,Struts作为MVC(模型-视图...
在本教程“step by step ssh 06 增加用户”中,我们将深入探讨如何在SSH环境中添加新用户,以及如何集成SSH与其他技术如Spring、Struts和Hibernate(SSH框架)进行应用开发,实现包括用户登录、数据保存和查询等功能...
在这个"step by step ssh 05 显示所有用户"的主题中,我们聚焦于SSH在用户管理方面的一个具体应用,即如何显示系统中的所有用户。这通常是系统管理员为了管理和监控用户账户而进行的操作。 首先,SSH主要由三部分...
### NHibernate Step by Step 教程知识点概览 #### 一、环境搭建与配置 - **NHibernate**:NHibernate 是一个开源的对象关系映射器(Object-Relational Mapper,ORM),它允许开发者以面向对象的方式操作关系型...
SSH整合开发是软件开发中的一个常见概念,主要指的是Spring、Struts和Hibernate这三大框架的集成应用。在本文中,我们将深入探讨SSH整合的核心概念、关键技术和如何实现用户管理模块,包括用户登录、删除、修改、...
### Spring MVC Step-by-Step中文版知识点概览 #### 一、Spring框架核心概念与组成部分 **1. 控制反转(IoC)** - **定义**:控制反转是一种编程模式,通过它对象的依赖关系是由外部容器进行管理而不是由对象本身...
1. **配置Struts2**:添加Struts2的依赖库,配置struts2-core.xml,定义全局配置和Action映射。同时,Struts2的拦截器可以用于实现权限控制、日志记录等功能。 2. **集成Spring**:在Struts2的配置文件中指定Spring...
We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To ...
内含step by step 开发文档 一、说明: 1、开发环境: Eclipse3.2.1+MyEclipse5.1+Tomcat5.5+Microsoft SQL Server 2000 2、主要实现技术:Struts1.2+Hibernate3.0+JavaScript+JSTL1.1+自定义标签 3、页面的树形...
"Spring起步例子 'Developing a Spring Framework MVC application step-by-step' 剖析.pdf"则可能是一个详细指南,通过逐步教学的方式引导读者创建一个基于Spring MVC的Web应用,内容可能包括Spring的配置、控制器...
《Spring MVC 深入浅出教程》 Spring MVC 是 Spring 框架的一个核心模块,主要用于构建...这个教程“Spring-MVC-step-by-step2.pdf”将引导你一步步掌握 Spring MVC 的核心概念和实战技巧,为你的 IT 事业添砖加瓦。
1. **什么是LINQ to NHibernate**: LINQ to NHibernate是NHibernate项目的一部分,它提供了与SQL类似的查询语法,可以直接在对象模型上进行操作,使得代码更加简洁、可读性强。通过使用LINQ,开发者可以避免编写...
很多NHibernate的学习者往往都是通过Hibernate的文档来学习,但是毕竟不是所有的.Net开发者都熟悉Java,也不是所有的人都有精力有时间去学习Java,所以,我准备开始一个Step by Step的NHibernate教程,以便有兴趣的...
《Spring从入门到精通》是一套全面且深入的Spring学习资料集合...在实践过程中,读者可以结合"Spring MVC step-by-step.files"中的实例代码进行操作,加深理论知识与实际应用的结合,从而真正达到从入门到精通的目标。
2. Validation step by step 2.1. 定义约束 2.1.1. 字段级(field level) 约束 2.1.2. 属性级别约束 2.1.3. 类级别约束 2.1.4. 约束继承 2.1.5. 对象图 2.2. 校验约束 2.2.1. 获取一个Validator的实例 2.2.2. ...