您的位置:首页 > 其它

hibernate学习第一天笔记

2014-07-04 15:26 302 查看

主配置文件

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.jar

dom4j-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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: