java——Hibernate(1)
Hibernate:
准备阶段:
在工程src下创建配置文件设置:
创建实体类:
//学生类 public class Students { // javabean设计原则:1、公有类2、提供不带参数的默认构造方式3、属性私有4、属性setter/getter封装 private int sid;// 学号 private String sname;// 姓名 private String gender;// 性别 private String brithday;// 出生日期 private String address;// 地址 public Students() { } public Students(int sid, String sname, String gender, String brithday, String address) { // super(); this.sid = sid; this.sname = sname; this.gender = gender; this.brithday = brithday; this.address = address; } public int getSid() { return sid; } public void setSid(int sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public String getBrithday() { return brithday; } public void setBrithday(String brithday) { this.brithday = brithday; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Students [sid=" + sid + ", sname=" + sname + ", gender=" + gender + ", brithday=" + brithday + ", address=" + address + "]"; } }
创建对象映射文件:
并在配置文件中加入
创建一个测试类进行测试:
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.After; import org.junit.Before; import org.junit.Test; //测试类 public class StudentTest { private SessionFactory sessionFactory; private Session session; private Transaction transaction; @Before public void init() { //以下是Hibernate5创建的会话,和Hibernate4过程有所不同; Configuration config = new Configuration().configure();//创建配置对象 sessionFactory = config.buildSessionFactory();//创建会话工厂 session = sessionFactory.openSession();//创建会话 //打开会话 transaction = session.beginTransaction();//创建事物 } @Test public void testSaveStudents() { //生成学生对象 Students s = new Students(1,"愚得标","男","12月3号","潮州"); session.save(s);//保存对象进数据库 } @After public void destory() { transaction.commit();//提交事务 session.close();//关闭会话 sessionFactory.close();//关闭会话工厂 } }
创建好一个hibernate数据库后运行即会在库中自动创建表和字段并在字段中填入相应的数据;
配置文件hibernate.cfg.xml文件的讲解:
对象映射文件:Students.hbm.xml
主要分析下<generator>这个属性,即是主键属性,常用的有assigned和native
注意:如果使用native类型,就算在程序中手动输入主键数值,它也是不会生效的;
常对应的数据映射类型:
若保存的数据类型为BLOB时,如图片转为二进制进行储存:
测试所储存的照片,将其读取出来:
即实体类本身的某个属性本身就是一个含有多字段的类的对象,这样数据库中会生成“postcode”、“phone”、“address”这3个字段,而不会生成address这个字段,因为address属性本身就是包含了这3个字段;称address属性为组件属性;
session常用的增删查改方法:
增:save();将对象保存在会话中
删:delete();删除会话中的对象
改:update();修改对象中的属性
查:get()/load()
总结:
Hibernate开发的基本步骤: