学习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
分享到:
相关推荐
5. **事务处理**:在Session的开始和结束之间,需要包裹在Transaction中,确保数据的一致性。当事务成功时,commit()提交事务,发生异常时,rollback()回滚。 6. **缓存策略**:Hibernate提供了第一级缓存(Session...
安装过程简单直观,使得开发者能快速开始使用这些强大的功能。 总结来说,Hibernate-Extensions是Hibernate的一个强大补充,它扩展了ORM的功能边界,使开发者能够更高效、更灵活地处理数据库操作。无论你是初学者...
8. **事务管理**: Hibernate支持事务管理,可以使用`Transaction`接口来控制事务的开始、提交和回滚。 9. **第一级缓存与第二级缓存**: Hibernate默认提供一级缓存(Session级别的),可选配二级缓存...
总之,这个压缩包为初学者提供了一个快速上手Hibernate的环境,包含了必要的依赖,使得开发者可以直接开始构建基于Hibernate的Java应用,而无需花费大量时间在依赖管理上。通过学习和实践,你可以掌握如何使用...
在开始第一个Hibernate项目之前,你需要下载Hibernate的JAR包,并将其添加到项目的类路径中。同时,还需要配置Hibernate的主配置文件`hibernate.cfg.xml`,其中包含数据库连接信息、方言等设置。 3. 实体类与映射...
**标题解析:**“hibernate的第一个例子”表明这是一个关于Hibernate框架的基础教程,主要目标是展示如何使用Hibernate进行数据持久化操作。 **描述分析:**描述提到这是一个超级简单的例子,包含一个持久化对象...
5. **编写代码**:现在你可以开始编写使用Hibernate的Java代码,如创建SessionFactory、打开Session、执行查询和事务等。 理解并熟练运用这些知识点,将使你在开发基于Hibernate3的Java应用时更加得心应手。
由于这是“必需”的jar包集合,意味着你无需额外下载其他依赖,可以直接将它们引入到你的项目中,开始进行数据库操作。在使用过程中,确保正确配置Hibernate的属性,如数据库连接信息、实体映射文件位置、日志配置等...
- **Transaction**: 事务处理接口,用于管理数据库事务的开始、提交和回滚。 **2. Hibernate配置** - **hibernate.cfg.xml**: Hibernate的主要配置文件,包含了数据库连接信息、方言设置等。 - **实体类注解**: ...
在开发过程中,使用这个“hibernate jar包”可以快速搭建Hibernate环境,只需将这些jar文件添加到项目的类路径中,然后配置相应的Hibernate配置文件(如hibernate.cfg.xml),就可以开始使用Hibernate进行持久化操作...
要开始使用Hibernate,首先需要下载Hibernate的开发包(如3.6.10版本)以及相关的依赖库,包括Slf4j和Log4j。将必要的jar包添加到项目构建路径中,包括Hibernate核心库、数据库驱动、Slf4j和Log4j的实现,以及其他...
这个"hibernate4.2基础jar包"包含了所有你需要直接导入到项目中以便开始使用Hibernate的库文件。 首先,`hibernate-core.jar`是Hibernate的核心库,包含了框架的基本功能。它提供了ORM(对象关系映射)的核心服务,...
接着,通过SessionFactory创建Session实例,然后就可以开始执行CRUD(创建、读取、更新、删除)操作了。 使用Hibernate可以极大地提高开发效率,减少因数据库操作而产生的错误,并且提高了代码的可维护性。然而,也...
《电子书-Hibernate 3.12》是曹晓刚编著的一本关于Hibernate框架的详细参考指南。Hibernate是一款强大的Java对象关系映射(ORM)框架,它为开发者提供了在Java应用程序中操作数据库的强大工具。这本书针对的是...
在开始使用 Hibernate 之前,需要进行环境配置,主要包括导入 Hibernate 相关的 JAR 包,如 Hibernate 的核心库、JDBC 驱动和单元测试库。配置文件 `hibernate.cfg.xml` 是 Hibernate 的心脏,它包含了数据库连接...
或者,仅从映射文档开始,Hibernate 也可以生成数据类。此外,还有一些针对 Eclipse 的 alpha 插件,可以在 IDE 中提供智能编辑支持以及对这些工具的图形访问。 #### 使用 Hibernate 的场景 尽管 Hibernate 看起来...
Transaction管理则涉及到数据库事务的开始、提交和回滚,确保数据的一致性。 6. **CRUD操作**:创建(Create)、读取(Read)、更新(Update)和删除(Delete)是数据库操作的基本动作。Hibernate提供了一系列便捷...
要开始使用Hibernate,首先需要配置相关的环境。`.classpath`和`.project`文件通常用于Eclipse或类似的IDE中,它们包含了项目的类路径和项目配置信息。`pom.xml`是Maven项目的核心配置文件,其中会包含Hibernate库和...
在开始构建一个Hibernate程序之前,首先要确保环境配置正确。以下为本项目的环境需求: - **操作系统**:Windows 10, 版本 1703。 - **开发工具**:IntelliJ IDEA 2018。 - **Java版本**:JDK 1.8。 - **数据库**:...
5. **事务(Transactions)**: Hibernate支持事务管理,通过`Transaction`接口进行事务的开始、提交、回滚等操作,确保数据的一致性。 6. **级联操作(Cascading)**: 使用`@Cascade`注解可以设置实体间的级联行为...