主配置文件
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 相当于 连接池 -->
<session-factory>
<!--
1,默认情况主配置文件的名称 :hibernate.cfg.xml
2,默认情况下位置:src ,(classpath , WEB-INF/classes/)
3 <property> 用于给hibernate设置基本参数的
name:参数名称,常用的名称 hibernate. 前置可以省略
hibernate.connection.driver_class 与 connection.driver_class 相同的
标签体:参数的值
4 配置内容参考:%h%/project/etc/hibernate.properties (key=value)
-->
<!-- 1 基本4项 -->
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_day01DB</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">1234</property>
<!-- 2方言-->
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 3 显示sql与 格式化sql -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!-- 4 自动创建表 , 一般不用,学习中、测试中,开发中慎用(编写程序时,数据库和表已经创建,DBA数据库管理员|项目经理 )
create,每一次都创建表 ,测试
update,如果表不存在,创建;如果存在,且结构发生改变,将修改表结构(维护添加,不维护删除)
create-drop,每一次都创建表 ,当执行factory.close();时,删除表
validate , 运行时校验 hbm.xml映射文件是否与表结构匹配
-->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 5 取消bean验证 -->
<property name="javax.persistence.validation.mode">none</property>
<!-- 6 映射关系 -->
<!-- 不允许 类名重复
-->
<mapping resource="cn/itcast/a_hello/User.hbm.xml"/>
<!--
<mapping resource="cn/itcast/b_hbm/User.hbm.xml"/>
-->
</session-factory>
</hibernate-configuration>
log4j.properties
### 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 mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d\:mylog.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=info, stdout
</pre><p></p><h2>cn.itcast.a_hell</h2><p></p><h3>TestDao.java</h3><p></p><pre code_snippet_id="416719" snippet_file_name="blog_20140704_3_1754754" name="code" class="java">package cn.itcast.a_hello;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class TestDao {
public static void main(String[] args) {
User user = new User();
user.setUsername("小龙女");
user.setPassword("1234");
Configuration config = new Configuration().configure(); //必须调用方法
SessionFactory factory = config.buildSessionFactory(); //连接池
Session session = factory.openSession(); //连接
Transaction transaction = session.beginTransaction(); //事务
//操作
session.save(user); //保存
transaction.commit(); //提交
session.close();
factory.close();
}
}
User.java
package cn.itcast.a_hello;
public class User implements java.io.Serializable{
private static final long serialVersionUID = 4535354274079526418L;
private Integer userId; //必须有
private String username;
private String password;
public User() { //必须有
super();
}
@Override
public String toString() {
return "User [userId=" + userId + ", username=" + username
+ ", password=" + password + "]";
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
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;
}
}
User.hbm.xml
package cn.itcast.a_hello;
public class User implements java.io.Serializable {
private static final long serialVersionUID = 4535354274079526418L;
private Integer userId; // 必须有
private String username;
private String password;
public User() { // 必须有
super();
}
@Override
public String toString() {
return "User [userId=" + userId + ", username=" + username
+ ", password=" + password + "]";
}
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
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;
}
}
cn.itcast.b_hbm
TestDao
package cn.itcast.b_hbm;
import java.io.File;
import java.io.FileInputStream;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class TestDao {
public static void main(String[] args) throws Exception {
FileInputStream is = new FileInputStream(new File("47.jpg"));
byte[] photo = new byte[is.available()];
is.read(photo);
is.close();
User user = new User();
user.setUsername("jack");
user.setAge(18);
user.setBirthday(new Date());
user.setGender(true);
user.setPhoto(photo);
user.setDesc("描述此处省略5W字....");
// api
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
session.save(user);
transaction.commit();
session.close();
// factory.close();
}
}
user.java
package cn.itcast.b_hbm;
import java.util.Date;
public class User {
private Integer id; // 必须存在,并且为整形
private String username;
private int age;
private Date birthday;
private boolean gender; // 性别
private byte[] photo; // 照片
private String desc; // 描述description
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public boolean isGender() { // 相当于getter方法
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public byte[] getPhoto() {
return photo;
}
public void setPhoto(byte[] photo) {
this.photo = photo;
}
}
User.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!--
<class> 配置对象(类)
name : 类的全限定名称(包 + 类名)
table : 对应的表名
catalog : 数据库的名称,默认使用的URL中设置的数据库名称 jdbc:mysql://localhost:3306/hibernate_day01DB
<id> 必须配置,设置主键(唯一标识)
name : javabean的属性值,##必须有
存在子元素:用于设置主键生成策略(下午讲)
<generator class="native"></generator>
<property> 用于配置普通属性
name : javabean的普通属性名称
column : 设置表字段(列)的名称,默认值name的值
length : 表字段的长度,默认值255
type : 表字段的类型
* java类型:java.lang.String 等,类的全限定名称,区分大小写
* hibernate类型:string 等
* 数据库类型
-->
<class name="cn.itcast.b_hbm.User" table="m_user" catalog="hibernate_day01DB">
<id name="id">
<generator class="native"></generator>
</id>
<property name="username" column="t_username" length="30" type="java.lang.String"></property>
<property name="age" type="integer"></property>
<property name="birthday">
<column name="birthday" sql-type="timestamp"></column>
</property>
<property name="gender"></property>
<property name="photo" type="binary" length="2000000"></property>
<property name="desc" column="`desc`"></property>
</class>
</hibernate-mapping>
cn.itcast.c_curd
TextCURD.java
package cn.itcast.c_curd;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import cn.itcast.a_hello.User;
public class TextCURD {
@Test
public void demo01(){
//录入
User user = new User();
user.setUsername("tom");
user.setPassword("9999");
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
//操作录入
session.save(user);
transaction.commit();
session.close();
factory.close();
}
@Test
public void demo02(){
// 更新
User user = new User();
user.setUserId(2);
user.setUsername("肉丝");
user.setPassword("longlong");
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
//操作
session.update(user); //通过id更新数据
transaction.commit();
session.close();
factory.close();
}
@Test
public void demo03(){
// 删除 id =3
User user = new User();
user.setUserId(3);
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
//操作
session.delete(user); //通过id删除用户
transaction.commit();
session.close();
factory.close();
}
@Test
public void demo04(){
// 通过id查询
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
//操作
Integer id = 2;
User user = (User)session.get(User.class, id); // 底层 User.class.newInstance()
System.out.println(user);
transaction.commit();
session.close();
factory.close();
}
@Test
public void demo05(){
// 查询所有用户
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
/* 操作 , 执行HQL语句 ,hibernate的查询语言,类似于sql,使用的是对象和对象的属性
* * sql 语句 表的字段
* * HQL 可以省略select
*/
//session.createQuery("from cn.itcast.a_hello.User");
Query query = session.createQuery("from User");
List<User> allUser = query.list(); //查询所有
for (User user : allUser) {
System.out.println(user);
}
transaction.commit();
session.close();
factory.close();
}
@Test
public void demo06(){
/*
* 分页:
* mysql分页格式:select ... limit 开始索引startIndex,每页显示的个数pageSize
* * pageNum :当前页(第几页)
*/
Configuration config = new Configuration().configure();
SessionFactory factory = config.buildSessionFactory();
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
Query query = session.createQuery("from User");
//第一页
// query.setFirstResult(0); //开始索引 startIndex = (pageNum - 1) * pageSize
// query.setMaxResults(2); //每页显示个数
//第二页
query.setFirstResult(2);
query.setMaxResults(2);
List<User> allUser = query.list(); //查询所有
for (User user : allUser) {
System.out.println(user);
}
transaction.commit();
session.close();
factory.close();
}
}
资料jar包
antlr-2.7.6.jar
commons-collections-3.1.jardom4j-1.6.1.jar
hibernate-jpa-2.0-api-1.0.1.Final.jar
hibernate3.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
log4j-1.2.17.jar
mysql-connector-java-5.1.22-bin.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.7.5.jar