`
美丽的小岛
  • 浏览: 308859 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

关于的Hibernate的开始

 
阅读更多

学习java得学习一个java数据库存持久层,这样对于操作数据库会有非常一效率的提升。选一个大家熟知的Hibernate吧。精通hibernate3.0那个书,指导我开始了一个Hibernate的程序的实验。

1. 环境:

jdk1.6,  myeclipse, mysql, hibernate3.0及相关的包。

2. 建表:

CREATE TABLE `login` (
                          `id` int(11) NOT NULL auto_increment,
                                `name` varchar(100) default '',
                                `password` varchar(100) default '',
                                PRIMARY KEY  (`id`)
) TYPE=MyISAM;

 3. 文件结构

4. 导入包

5.开始的数据库
 

6. UserInfo

package com.lr;
public class UserInfo {
	private Integer id ;
	private String userName ;
	private String password ;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

 7.UserInfo.hbm.xml文件

<?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.lr.UserInfo" table="login">
		<!--类对象的主键和表的主键的关联-->
		<id name="id" type="integer">
			<column name="id" />
			<!--指明主键的自增长类型-->
			<generator class="identity" />
		</id>
		<!--以下为普通字段的关联-->
		<property name="userName" type="string">
			<column name="name" length="100" />
		</property>
		<property name="password" type="string">
			<column name="password" length="100" />
		</property>
	</class>
</hibernate-mapping>

 8.hibernate.cfg.xml文件

<?xml version='1.0' encoding='gb2312'?>
<!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="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
	<!--配置数据库网络连接的url-->
	<property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate</property>
	<!--配置数据库网络连接的用户名,默认一般为root-->
	<property name="hibernate.connection.username">root</property>
	<!--配置数据库网络连接的密码-->
	<property name="hibernate.connection.password"></property>
	<!--配置数据库网络连接池的大小-->
	<property name="hibernate.connection.pool.size">20</property>
	<!--后台是否显示sql,开发时为true,运行时为false-->
	<property name="hibernate.show_sql">true</property>
	<!-- 设置JDBC的隔离级别-->
	<property name="hibernate.connection.isolation">2</property>
	<property name="hibernate.format_sql">true</property>
	<property name="jdbc.fetch_size">50</property>
	<property name="jdbc.batch_size">25</property>
	<property name="jdbc.use_scrollable_resultset">false</property>
	<property name="connection.useUnicode">true</property>
	<!--编码方式-->
	<property name="connection.characterEncoding">gbk</property>
	<!--数据库方言,每个数据库都有方言,hibernate已经为大多数数据库指明了方言-->
	<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
	<property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
	<mapping resource="com/lr/UserInfo.hbm.xml" />
	<!-- mapping resource="com.lr.UserInfo.java" -->
</session-factory>
</hibernate-configuration>

 9.HibernateTest.java

package com.lr;
import java.util.Iterator;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HibernateTest {
	public static void main(String[] args) {
		Configuration conf = new Configuration().configure() ;
		SessionFactory sessions = conf.buildSessionFactory();
		Session session = sessions.openSession();
		Transaction tx = null;
		try {
			// 开始事务
			tx = session.beginTransaction();
			// //给对象设定值
			UserInfo u = new UserInfo();
			u.setUserName("李四");
			u.setPassword("123456");
			System.out.println("start...");
		    //保存数据到数据库
			session.save(u);
			// 从持久化类UserInfo中读取数据

			UserInfo user = (UserInfo) session.get(UserInfo.class, new Integer(1)) ;
			System.out.println("UserName:"+user.getUserName());
			//load前提是存在指定的数据,用get数据库中可没有指定的记录
			
			//删除记录
			String hqld = "delete UserInfo where id=9" ;
			Query queryd = session.createQuery(hqld) ;
			queryd.executeUpdate() ;
			
			//使用hql语句
			String hqls = "from UserInfo userInfo where userInfo.userName like ?";
			Query querys = session.createQuery(hqls);
			querys.setParameter(0, "l%");
			List list = querys.list();
			
			// 结束事务
			tx.commit();
			
			Iterator<?> it = list.iterator();
			while (it.hasNext()) {
				UserInfo userInfo = (UserInfo) it.next();
				System.out.println(userInfo.getUserName());
			}
			System.out.println("it is successful!");
		} catch (HibernateException e) {
			System.out.println(e.getMessage());
			//e.printStackTrace();
			if (tx != null) {
				tx.rollback();
			}
		} finally {
			session.close();
		}

	}
}

10.结果显示

 11.操作后的数库

12.可能会遇到的问题

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).

log4j:WARN Please initialize the log4j system properly.

start...

Exception in thread "main" java.lang.NoClassDefFoundError: antlr/ANTLRException

    at org.hibernate.hql.ast.ASTQueryTranslatorFactory.createQueryTranslator(ASTQueryTranslatorFactory.java:27)

    at org.hibernate.impl.SessionFactoryImpl.createQueryTranslators(SessionFactoryImpl.java:357)

    at org.hibernate.impl.SessionFactoryImpl.getQuery(SessionFactoryImpl.java:423)

    at org.hibernate.impl.SessionImpl.getQueries(SessionImpl.java:884)

    at org.hibernate.impl.SessionImpl.executeUpdate(SessionImpl.java:865)

    at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:89)

    at com.lr.HibernateTest.main(HibernateTest.java:41)

Caused by: java.lang.ClassNotFoundException: antlr.ANTLRException

    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)

    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)

    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)

    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)

    ... 7 more
解决:对于包的引入问题,报错什么就引入什么。
 

 

  • 大小: 6.2 KB
  • 大小: 2.4 KB
  • 大小: 16 KB
  • 大小: 22.4 KB
  • 大小: 2.2 KB
1
0
分享到:
评论

相关推荐

    hibernate aip hibernate aip

    5. **事务处理**:在Session的开始和结束之间,需要包裹在Transaction中,确保数据的一致性。当事务成功时,commit()提交事务,发生异常时,rollback()回滚。 6. **缓存策略**:Hibernate提供了第一级缓存(Session...

    Hibernate-extensions 完整安装包

    安装过程简单直观,使得开发者能快速开始使用这些强大的功能。 总结来说,Hibernate-Extensions是Hibernate的一个强大补充,它扩展了ORM的功能边界,使开发者能够更高效、更灵活地处理数据库操作。无论你是初学者...

    hibernate和MySQL的jar

    8. **事务管理**: Hibernate支持事务管理,可以使用`Transaction`接口来控制事务的开始、提交和回滚。 9. **第一级缓存与第二级缓存**: Hibernate默认提供一级缓存(Session级别的),可选配二级缓存...

    Hibernate入门jar包

    总之,这个压缩包为初学者提供了一个快速上手Hibernate的环境,包含了必要的依赖,使得开发者可以直接开始构建基于Hibernate的Java应用,而无需花费大量时间在依赖管理上。通过学习和实践,你可以掌握如何使用...

    hibernate第一个hibernate

    在开始第一个Hibernate项目之前,你需要下载Hibernate的JAR包,并将其添加到项目的类路径中。同时,还需要配置Hibernate的主配置文件`hibernate.cfg.xml`,其中包含数据库连接信息、方言等设置。 3. 实体类与映射...

    hibernate的第一个例子

    **标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...

    Hibernate3的依赖包

    5. **编写代码**:现在你可以开始编写使用Hibernate的Java代码,如创建SessionFactory、打开Session、执行查询和事务等。 理解并熟练运用这些知识点,将使你在开发基于Hibernate3的Java应用时更加得心应手。

    hibernate必要的jar包

    由于这是“必需”的jar包集合,意味着你无需额外下载其他依赖,可以直接将它们引入到你的项目中,开始进行数据库操作。在使用过程中,确保正确配置Hibernate的属性,如数据库连接信息、实体映射文件位置、日志配置等...

    Hibernate面试题专栏 - 最全的Hibernate面试题, Hibernate笔试题, Hibernate问题

    - **Transaction**: 事务处理接口,用于管理数据库事务的开始、提交和回滚。 **2. Hibernate配置** - **hibernate.cfg.xml**: Hibernate的主要配置文件,包含了数据库连接信息、方言设置等。 - **实体类注解**: ...

    hibernate jar包

    在开发过程中,使用这个“hibernate jar包”可以快速搭建Hibernate环境,只需将这些jar文件添加到项目的类路径中,然后配置相应的Hibernate配置文件(如hibernate.cfg.xml),就可以开始使用Hibernate进行持久化操作...

    hibernate权威整理文档!

    要开始使用Hibernate,首先需要下载Hibernate的开发包(如3.6.10版本)以及相关的依赖库,包括Slf4j和Log4j。将必要的jar包添加到项目构建路径中,包括Hibernate核心库、数据库驱动、Slf4j和Log4j的实现,以及其他...

    hibernate4.2基础jar包

    这个"hibernate4.2基础jar包"包含了所有你需要直接导入到项目中以便开始使用Hibernate的库文件。 首先,`hibernate-core.jar`是Hibernate的核心库,包含了框架的基本功能。它提供了ORM(对象关系映射)的核心服务,...

    Hibernate驱动包

    接着,通过SessionFactory创建Session实例,然后就可以开始执行CRUD(创建、读取、更新、删除)操作了。 使用Hibernate可以极大地提高开发效率,减少因数据库操作而产生的错误,并且提高了代码的可维护性。然而,也...

    电子书-Hibernate 3.12

    《电子书-Hibernate 3.12》是曹晓刚编著的一本关于Hibernate框架的详细参考指南。Hibernate是一款强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。这本书针对的是...

    hibernate 重点知识原创

    在开始使用 Hibernate 之前,需要进行环境配置,主要包括导入 Hibernate 相关的 JAR 包,如 Hibernate 的核心库、JDBC 驱动和单元测试库。配置文件 `hibernate.cfg.xml` 是 Hibernate 的心脏,它包含了数据库连接...

    Hibernate 概述

    或者,仅从映射文档开始,Hibernate 也可以生成数据类。此外,还有一些针对 Eclipse 的 alpha 插件,可以在 IDE 中提供智能编辑支持以及对这些工具的图形访问。 #### 使用 Hibernate 的场景 尽管 Hibernate 看起来...

    hibernate教程打包下载,史上最全的HIBERNATE

    Transaction管理则涉及到数据库事务的开始、提交和回滚,确保数据的一致性。 6. **CRUD操作**:创建(Create)、读取(Read)、更新(Update)和删除(Delete)是数据库操作的基本动作。Hibernate提供了一系列便捷...

    hibernate系列(一)hibernate入门

    要开始使用Hibernate,首先需要配置相关的环境。`.classpath`和`.project`文件通常用于Eclipse或类似的IDE中,它们包含了项目的类路径和项目配置信息。`pom.xml`是Maven项目的核心配置文件,其中会包含Hibernate库和...

    Hibernate+IDEA 2018 一个hibernate程序

    在开始构建一个Hibernate程序之前,首先要确保环境配置正确。以下为本项目的环境需求: - **操作系统**:Windows 10, 版本 1703。 - **开发工具**:IntelliJ IDEA 2018。 - **Java版本**:JDK 1.8。 - **数据库**:...

    hibernate最新版jar包(全)

    5. **事务(Transactions)**: Hibernate支持事务管理,通过`Transaction`接口进行事务的开始、提交、回滚等操作,确保数据的一致性。 6. **级联操作(Cascading)**: 使用`@Cascade`注解可以设置实体间的级联行为...

Global site tag (gtag.js) - Google Analytics