Hibernate是壹個開放源代碼的對象關系映射框架,它對JDBC進行了非常輕量級的對象封裝,使得Java程序員可以隨心所欲的使用對象編程思維來操縱數據庫。
1.創建數據庫驅動連接
單擊myeclipse工作空間的右上角的編輯模式,選擇Myeclipse Database Explorer。
新建數據庫連接
右擊左側的面板,選擇new,新建壹個數據庫連接。
配置連接文件
根據妳的數據庫選擇不同的數據連接方式,填寫妳要創建的連接的名字,URL等信息,如圖。
最重要的是加載驅動,沒有的話到網上下載自己數據庫的驅動。
我這裏是JDBC,連接Mysql數據庫。單擊next——finish。
選中妳新建的數據庫,然後單擊連接按鈕開始進行連接或者雙擊新建的數據庫名連接,註意:壹定保證妳的數據庫服務正常工作,否則是連接不上的。
2.MyEclipse怎麽自動建立持久類映射.hbm.xml
連接上之後就可以建立持久類映射了。
打開數據庫中的table,選中需要反向工程生成映射的表
選中需要反向工程生成映射的表,右鍵->Hibernate Reverse Engineering
然後配置壹些數據
第壹步就是配置數據表到實體類之間的映射。
Java src folder ——指定把反向工程生成的文件放入到那個項目中(這裏要指向到src文件夾才可以)
Java package ——實體類和映射文件存放到哪個包當中。(這裏通常是項目中的entity包裏)
Create POJO<>DB Table mapping information —— 是否生成對應的映射文件(*.hbm.xml文件)
Add Hibernate Mapping Annotations to POJO —— 使用註解配置實體類(註意!上述兩者中選擇壹種即可,要麽是實體類+.hbm.xml,實體類+註解)
Java Data Object (POJO <> DB Table) —— 是否生成實體類文件(註意!下面的Createabstract class不要選!因為實體類不需要抽象父類)
finish後在上面所配置的包中就會有實體類和映射文件了
3.Myeclipse自動創建hibernate
在這之前建立web object項目和mysql中的數據庫就不說了、、這裏我的項目名為HibernateTest數據庫為hospital,這是隨便的啦、、、
工具:myeclipse 10
過程:選中項目,右鍵選擇:MyEclipse -> Project Facets[Capabilities] -> Install HibernateFacet,選擇版本
然後next
next選擇數據庫連接
next放置hibernate的session工廠
finish後項目中就會自動加載hibernate的jar包等,項目中的hibernate就已經好了。。
建立簡單增刪查改
我沒有寫dao接口、、、
daoImpl.java
public class daoImpl { //增加User
public void addUser(Users user) {
Session session = HibernateSessionFactory.getSession();
Transaction ts = null; try{
log4jInput(user);
ts = session.beginTransaction();
session.save(user);
ts.commit();
}catch(Exception ex){ //回滾
ts.rollback();
ex.printStackTrace();
}finally{
HibernateSessionFactory.closeSession();
}
}
//刪除User表中的數據 根據主鍵刪除
public boolean deleteUser(Users user){
Session session=HibernateSessionFactory.getSession();
Transaction ts = null; try{
log4jInput(user);
ts = session.beginTransaction();
session.delete(user);
ts.commit(); return true;
}catch(Exception ex){
ts.rollback();
System.out.println("delete");
ex.printStackTrace(); return false;
}finally{
HibernateSessionFactory.closeSession();
}
} //改User表中的數據 根據主鍵更改其他信息
public boolean updateUser(Users user){
Session session=HibernateSessionFactory.getSession();
Transaction ts = null; try{
log4jInput(user);
ts = session.beginTransaction();
session.update(user);
ts.commit(); return true;
}catch(Exception ex){
ts.rollback();
System.out.println("update");
ex.printStackTrace(); return false;
}finally{
HibernateSessionFactory.closeSession();
}
} //查詢User表 1.條件where後面的條件 2.占位符對應的數據 3.value對應的數據類型 在沒有時為null
public List<Users> queryUser(String where,String[] value,Type[] type){
Session session = HibernateSessionFactory.getSession();
Criteria criteria=null; if(where!=null){
criteria = session.createCriteria(Users.class)
.add(Restrictions.sqlRestriction(where, value, type));
}else{
criteria = session.createCriteria(Users.class);
}
@SuppressWarnings("unchecked")
List<Users> users=criteria.list();
HibernateSessionFactory.closeSession(); return users;
}
//log4j的使用 添加log4j的jar,將log4j.properties文件放入src或web info文件下
public void log4jInput(Object o){
Logger log=Logger.getLogger("org.zblog.test");
log.info(o.toString());
}}1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
也是直接在bean中測試的
public class UserBean { public static void main(String[]a){
addUser(); //deleteUser();
//updateUser();
//queryUser();
} public static void addUser(){
Users user=new Users();
user.setUsername("root");
user.setPassword("root");
user.setRole("admin");
dao d=new dao();
d.addUser(user);
} public static void deleteUser(){
Users user=new Users();
user.setUid(15);//主鍵id
dao d=new dao();
System.out.print(d.deleteUser(user));
} //根據主鍵更改其他信息
public static void updateUser(){
Users user=new Users(); //主鍵也要設置
user.setUid(14);//主鍵id
user.setUsername("老王");
user.setPassword("1234");
user.setRole("admin");
dao d=new dao();
d.updateUser(user);
} public static void queryUser(){
dao d=new dao();
String[] value={"admin"};
Type[] type={Hibernate.STRING};
List<Users> li=d.queryUser("username=?",value,type); for(int i=0;i<li.size();i++){
System.out.println(li.get(i).toString());
}
}
}123456789101112131415161718192021222324252627282930313233343536373839404142434445
可以直接執行了,可能會出現log4j的警告,但這不會影響數據庫裏的修改
log4j的警告:
log4j:WARN No appenders could be found for logger(org.apache.commons.digester.Digester.sax).
log4j:WARN Please initialize the log4j system properly.
這是log4j沒有配置引起的,可以將它的配置文件log4j.properties放置在src下就可以了。
log4j.properties的內容是:
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.category.org.zblog=ERROR,A1
log4j.category.org.zblog=INFO,A2
log4j.appender.A1=org.apache.log4j.ConsoleAppenderlog4j.appender.A1.layout=org.apache.log4j.PatternLayoutlog4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
log4j.appender.A2=org.apache.log4j.RollingFileAppenderlog4j.appender.A2.File=E:/study/log4j/zhuwei.htmllog4j.appender.A2.MaxFileSize=500KB
log4j.appender.A2.MaxBackupIndex=1log4j.appender.A2.layout=org.apache.log4j.HTMLLayout