hibernate环境的搭建和对数据库表的增删改查。(配图解详解)
2013-06-23 13:05
399 查看
首先hiebernate是一种可持久化的框架。
Hibernate可以关联很多流行的数据库。
这里我写一个用hibernate关联mysql。
步骤1:首先启动mysql的服务,在mysql中建立一个数据库如“test” 在该数据库中创建一个表如user。
步骤2:创建一个工程,如:java工程,
步骤3:首先你得导入hibernate的jar 包和mysql 的驱动。如果这里是其他数据库就导入其他包的数据库驱动。
如图:
步骤4:创建一个
<!DOCTYPEhibernate-configuration
PUBLIC
"-//Hibernate/HibernateConfiguration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<propertyname="connection.driver_class">
com.mysql.jdbc.Driver //这里是数据库的驱动类,如果是其他数据库就是其他
</property>
<propertyname="connection.url">jdbc:mysql://127.0.0.1:3306/test</property>//连接数据库的库
<propertyname="connection.username">root</property>//数据库名字
<propertyname="connection.password">330127</property>//数据库密码
<propertyname="dialect">org.hibernate.dialect.HSQLDialect</property>//这个将来转化成hibernate的自己的sql语句,叫hsl
<propertyname="show_sql">true</property>
<mapping resource="com/fish/my.hbm.xml"/>//这个是数据库中的表,得单独建一个文件
</session-factory>
</hibernate-configuration>
步骤5:创建一个类,相当于javabean,用来映射表中的数据。User.ava
packagecom.fish;
public
class User {
Stringusername;
Stringpasswrod;
Stringname;
int
money;
publicString getUsername() {
return
username;
}
public
void setUsername(String username) {
this.username = username;
}
publicString getPasswrod() {
return
passwrod;
}
public
void setPasswrod(String passwrod) {
this.passwrod = passwrod;
}
publicString getName() {
return
name;
}
public
void setName(String name) {
this.name = name;
}
public
int getMoney() {
return
money;
}
public
void setMoney(int money) {
this.money = money;
}
}
步骤6:当映射类准备完毕,就得配置xml。
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEhibernate-mapping
PUBLIC
"-//Hibernate/HibernateMapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<classname="com.fish.User"table="user">//这里的name是映射类的类名,table是表的属性
<idname="username">//如果节点是ID说明该属性对应的表的字段是主键
<columnname="username"></column>//这里所有的name是类的属性,colimn是表的字段
<typename="java.lang.String"></type>
</id>
<propertyname="passwrod"column="passwrod"type="java.lang.String"></property>
<propertyname="name"column="name"type="java.lang.String"></property>
<propertyname="money"column="money"type="java.lang.Integer"></property>
</class>
</hibernate-mapping>
步骤7,这些准备完毕,还得加一个
这个是本来就有的,
###direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p
%c{1}:%L-
%m%n
###direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE}%5p %c{1}:%L - %m%n
###set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
#log4j.logger.org.hibernate=info
log4j.logger.org.hibernate=debug
###log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
###log just the SQL
#log4j.logger.org.hibernate.SQL=debug
###log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
###log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug
###log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
###log cache activity ###
#log4j.logger.org.hibernate.cache=debug
###log transaction activity
#log4j.logger.org.hibernate.transaction=debug
###log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
###enable the following line if you want to track down connection ###
###leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
步骤八当准备这些完毕后,其实就可以对表进行增删改查了。
这里我写一个测试类。
packagecom.fish;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
public
class Test {
public
static void main(String[] args) {
Configuration configuration = new Configuration();//
configuration.configure("hibernate.cfg.xml");//利用上面创建的类找到你创建的xml文件
SessionFactory factory =configuration.buildSessionFactory();
//下面一段代码是对添加的数据的,首先创建一个user,对其赋数值,相当于表中的一条记录
User user = new User();
user.setUsername("flyfish");
user.setPasswrod("330127");
user.setName("zhangsan");
user.setMoney(1200);
//创建一个session并取得与数据库的连接。因为数据的增删改,是要对表进行提交的所以要用到事务进行提交和回滚
Session session = factory.openSession();
Transaction transaction =session.beginTransaction();//这里创建该表的数据事务
transaction.begin();//启动事务
session.save(user);//session的方法可以对数据进行增删改包括查
transaction.commit();//插入完成就要对事务进行提交
session.close();//关闭会话。
}
}
下面在写一个测试类对数据的查询.
packagecom.fish;
importjava.util.List;
importorg.hibernate.Query;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
import org.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
public
class Test {
public
static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
SessionFactory factory =configuration.buildSessionFactory();
//对数据的查询.首先得用session连接数据库,query是查询
Session session=factory.openSession();
Query query=session.createQuery("from User");//里面的条件。User是类不是表!!
List<User> list =query.list();//获取查询的结果集
for(int i=0;i<list.size();i++){//对结果集的遍历
User user=list.get(i);
System.out.println(user.getName());//输出你查询的数据。
}
}
}
//这里我用的是hibernate3.2的。工程的目录结构如下
扩展:测试类就像jsp 中的servlet对数据进行操作,映射类就像jsp中的javabean。而xml与表的关联就想自己写的一个工具类与数据库的连接。
Hibernate可以关联很多流行的数据库。
这里我写一个用hibernate关联mysql。
步骤1:首先启动mysql的服务,在mysql中建立一个数据库如“test” 在该数据库中创建一个表如user。
步骤2:创建一个工程,如:java工程,
步骤3:首先你得导入hibernate的jar 包和mysql 的驱动。如果这里是其他数据库就导入其他包的数据库驱动。
如图:
步骤4:创建一个
<!DOCTYPEhibernate-configuration
PUBLIC
"-//Hibernate/HibernateConfiguration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<propertyname="connection.driver_class">
com.mysql.jdbc.Driver //这里是数据库的驱动类,如果是其他数据库就是其他
</property>
<propertyname="connection.url">jdbc:mysql://127.0.0.1:3306/test</property>//连接数据库的库
<propertyname="connection.username">root</property>//数据库名字
<propertyname="connection.password">330127</property>//数据库密码
<propertyname="dialect">org.hibernate.dialect.HSQLDialect</property>//这个将来转化成hibernate的自己的sql语句,叫hsl
<propertyname="show_sql">true</property>
<mapping resource="com/fish/my.hbm.xml"/>//这个是数据库中的表,得单独建一个文件
</session-factory>
</hibernate-configuration>
步骤5:创建一个类,相当于javabean,用来映射表中的数据。User.ava
packagecom.fish;
public
class User {
Stringusername;
Stringpasswrod;
Stringname;
int
money;
publicString getUsername() {
return
username;
}
public
void setUsername(String username) {
this.username = username;
}
publicString getPasswrod() {
return
passwrod;
}
public
void setPasswrod(String passwrod) {
this.passwrod = passwrod;
}
publicString getName() {
return
name;
}
public
void setName(String name) {
this.name = name;
}
public
int getMoney() {
return
money;
}
public
void setMoney(int money) {
this.money = money;
}
}
步骤6:当映射类准备完毕,就得配置xml。
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEhibernate-mapping
PUBLIC
"-//Hibernate/HibernateMapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<classname="com.fish.User"table="user">//这里的name是映射类的类名,table是表的属性
<idname="username">//如果节点是ID说明该属性对应的表的字段是主键
<columnname="username"></column>//这里所有的name是类的属性,colimn是表的字段
<typename="java.lang.String"></type>
</id>
<propertyname="passwrod"column="passwrod"type="java.lang.String"></property>
<propertyname="name"column="name"type="java.lang.String"></property>
<propertyname="money"column="money"type="java.lang.Integer"></property>
</class>
</hibernate-mapping>
步骤7,这些准备完毕,还得加一个
这个是本来就有的,
###direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p
%c{1}:%L-
%m%n
###direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE}%5p %c{1}:%L - %m%n
###set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=warn, stdout
#log4j.logger.org.hibernate=info
log4j.logger.org.hibernate=debug
###log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=debug
###log just the SQL
#log4j.logger.org.hibernate.SQL=debug
###log JDBC bind parameters ###
log4j.logger.org.hibernate.type=info
#log4j.logger.org.hibernate.type=debug
###log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug
###log HQL parse trees
#log4j.logger.org.hibernate.hql=debug
###log cache activity ###
#log4j.logger.org.hibernate.cache=debug
###log transaction activity
#log4j.logger.org.hibernate.transaction=debug
###log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=debug
###enable the following line if you want to track down connection ###
###leakages when using DriverManagerConnectionProvider ###
#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace
步骤八当准备这些完毕后,其实就可以对表进行增删改查了。
这里我写一个测试类。
packagecom.fish;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
public
class Test {
public
static void main(String[] args) {
Configuration configuration = new Configuration();//
configuration.configure("hibernate.cfg.xml");//利用上面创建的类找到你创建的xml文件
SessionFactory factory =configuration.buildSessionFactory();
//下面一段代码是对添加的数据的,首先创建一个user,对其赋数值,相当于表中的一条记录
User user = new User();
user.setUsername("flyfish");
user.setPasswrod("330127");
user.setName("zhangsan");
user.setMoney(1200);
//创建一个session并取得与数据库的连接。因为数据的增删改,是要对表进行提交的所以要用到事务进行提交和回滚
Session session = factory.openSession();
Transaction transaction =session.beginTransaction();//这里创建该表的数据事务
transaction.begin();//启动事务
session.save(user);//session的方法可以对数据进行增删改包括查
transaction.commit();//插入完成就要对事务进行提交
session.close();//关闭会话。
}
}
下面在写一个测试类对数据的查询.
packagecom.fish;
importjava.util.List;
importorg.hibernate.Query;
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
import org.hibernate.Transaction;
importorg.hibernate.cfg.Configuration;
public
class Test {
public
static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.configure("hibernate.cfg.xml");
SessionFactory factory =configuration.buildSessionFactory();
//对数据的查询.首先得用session连接数据库,query是查询
Session session=factory.openSession();
Query query=session.createQuery("from User");//里面的条件。User是类不是表!!
List<User> list =query.list();//获取查询的结果集
for(int i=0;i<list.size();i++){//对结果集的遍历
User user=list.get(i);
System.out.println(user.getName());//输出你查询的数据。
}
}
}
//这里我用的是hibernate3.2的。工程的目录结构如下
扩展:测试类就像jsp 中的servlet对数据进行操作,映射类就像jsp中的javabean。而xml与表的关联就想自己写的一个工具类与数据库的连接。
相关文章推荐
- 实训第一天--增删改查加hibernate+搭建环境常见问题
- mybatis自带常用操作数据库方法详解以及如何搭建简单的mybatis环境
- 关于hibernate的详解,从搭建环境到客户管理系统第一
- 搭建hibernate环境 使用JDBC连接数据库
- windows gtk+开发环境搭建方法详解(图解)
- Hibernate(一)—环境搭建和基本的增删改查
- Hibernate环境搭建、配置及实现简单数据库存取
- iOS 开发 XMPP即时通讯项目开发(仿微信)-详解之xmpp环境搭建(数据库/客户端/服务器)
- Hibernate详解(一)搭建Hibernate环境,实现简单的CURD
- iOS 开发 XMPP即时通讯项目开发(仿微信)-详解之xmpp环境搭建(数据库/客户端/服务器)
- 非常详细的Hibernate环境搭建【图解教程】及简单使用
- 【Hibernate框架开发之一】搭建Hibernate环境并解决3个常现问题
- Android开发环境搭建完全图解
- Android环境j简易搭建详解
- Hibernate学习之——搭建log4j日志环境
- 回顾第一次搭建hibernate本机环境
- hibernate环境搭建
- 搭建wamp环境,数据库基础知识
- Ubuntu12.04嵌入式交叉编译环境arm-linux-gcc搭建过程,图解
- Linux下搭建LAMP环境详解