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.jarcommons-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
相关文章推荐
- hibernate学习笔记第一天(2)
- hibernate学习笔记第一天(3)
- hibernate 学习笔记(马士兵教程) 第一天
- Hibernate + Struts 学习笔记 (作者: Annhy )
- Hibernate 3.2 学习笔记 查询和检索
- Hibernate 实例学习笔记
- 学习笔记之 O/R 映射技术的王牌Hibernate框架
- Hibernate 学习笔记
- Hibernate 3.2 学习笔记 映射实体关联关系
- Hibernate 学习笔记-1-1(一个简单的Hibernate实例)
- Hibernate学习笔记
- [学习笔记] 快速开发Hibernate
- Hibernate学习笔记---1.java对象持久化技术
- Hibernate Gossip学习笔记
- Hibernate2.0缓存学习笔记
- 学习Struts+spring+Hibernate的笔记.
- Hibernate 学习笔记
- PHP 第一天学习笔记
- C# 学习笔记 -- 第一天 创建第一个程序
- Struts+hibernate学习第一天