hibernate密碼加密
對!!
你資料庫里的密碼是經過md5加密過的,登錄時你輸入密碼後系統會把你的密碼進到md5加密,然後再與資料庫里的加密的md5碼進行對比!!這是為了防止惡意程序進行監聽你的密碼!!
⑵ Hibernate 問題
datasource.driverClassName=com.microsoft.jdbc.sqlserver.SQLServerDriver ---注冊jdbc驅動名稱
datasource.url=jdbc:sqlserver://localhost:1433;--注冊jdbc url地址 DatabaseName=newjspdev ---資料庫名稱
datasource.username=javaee --資料庫用戶名
datasource.password=javaee --資料庫密碼
datasource.maxActive=10 --表示連接池的最大連接數量10
datasource.maxIdle=2 --表示連接池的空閉數量2
datasource.maxWait=120000 --最長連接等待時間是120000毫秒
datasource.defaultAutoCommit=true --自動提交為true(就是不用自己寫commit語句了)
datasource.whenExhaustedAction=1 --指定在池中借出對象的數目已達極限的情況下,調用它的borrowObject方法時的行為datasource.validationQuery=select 1 from al --驗證連接是否成功(sqlserver沒有al這張表吧,應該是oracle資料庫才用這個語句驗證的吧)
datasource.testOnBorrow=true
datasource.testOnReturn=false
hibernate.dialect=org.hibernate.dialect.SQLServerDialect
hibernate.jdbc.batch_size=25
hibernate.jdbc.fetch_size=50
hibernate.show_sql=true --在後台顯示執行的sql語句
hibernate.hbm2ddl.auto=create-drop --可以幫助你實現正向工程,即由java代碼生成資料庫腳本,進而生成具體的表結構.
(
它包含4個屬性:
create : 會根據你的model類來生成表,但是每次運行都會刪除上一次的表,重新生成表,哪怕2次沒有任何改變
create-drop : 根據model類生成表,但是sessionFactory一關閉,表就自動刪除
update : 最常用的屬性,也根據model類生成表,即使表結構改變了,表中的行仍然存在,不會刪除以前的行
validate : 只會和資料庫中的表進行比較,不會創建新表,但是會插入新值
)
⑶ struts2和hibernate項目整合的登錄後修改密碼怎麼寫求思路和關鍵代碼
我是分為新密碼和舊密碼
舊密碼也就是登陸的密碼可以在session中獲取
新密碼是剛輸入的密碼
如果新密碼和舊密碼一致就新建資料庫連接寫個更新密碼的語句
加入了md5加密,新舊密碼對比前要先用md5轉換一下,你可以把這個功能去掉,最下面是md5的工具類
ppublicStringupdatepwd(){
Usersu=(User)ServletActionContext.getRequest().getSession().getAttribute("users");
UserServices=newUserService();
if(su.getPassword().equals(StringUtils.getMd5(user.getOldpwd()))){
if(user.getNewpwd().equals(user.getRepwd())){
if(s.updatepwd(StringUtils.getMd5(user.getNewpwd()),su.getId())){
ActionContext.getContext().put("msg","密碼修改成功,請重新登陸!");
ServletActionContext.getRequest().getSession().invalidate();
return"login";
}else{
ActionContext.getContext().put("msg","密碼修改失敗!");
return"up_error";
}
}else{
ActionContext.getContext().put("msg","確認密碼不一致!");
return"up_error";
}
}else{
ActionContext.getContext().put("msg","原密碼錯誤!");
return"up_error";
}
}
publicbooleanupdatepwd(Stringpwd,Integerid){
returnnewUserDao().updatepwd(pwd,id);
}
publicBooleanupdatepwd(Stringpwd,Integerid){
Sessionsession=HibernateUtils.getSession();
Transactiontr=session.beginTransaction();
Queryquery=session.createQuery("UpdateUsersetpassword=?whereid=?");
query.setString(0,pwd);
query.setInteger(1,id);
inti=query.executeUpdate();
tr.commit();
if(i>0){
returntrue;
}else{
returnfalse;
}
}
ackagecom.yh.utils;
importjava.math.BigInteger;
importjava.security.MessageDigest;
importjava.security.NoSuchAlgorithmException;
publicclassStringUtils{
/**
*判斷字元串是否為空,包括null和「」
*@paramstr
*@return
*/
publicstaticbooleanisNotBlank(Stringstr){
returnstr!=null&&str.trim().length()>0;
}
/**
*對字元串進行MD5加密
*@paramstr:加密前的一個字元串
*@return:32位加密後的字元串
*/
publicstaticStringgetMd5(Stringstr){
Stringmd5Str="";
try{
MessageDigestmd=MessageDigest.getInstance("md5");
byte[]bytes=md.digest(str.getBytes());
BigIntegermd5String=newBigInteger(1,bytes);
md5Str=md5String.toString(16);//轉換後,一般會是一個32位的字元串
//如果加密後的字元串不到32位,需要在字元串前添加0.補足32位
for(inti=0;i<32-md5Str.length();i++){
md5Str=("0"+md5Str);
}
}catch(NoSuchAlgorithmExceptione){
e.printStackTrace();
}
returnmd5Str;
}
publicstaticvoidmain(String[]args){
Stringstr=StringUtils.getMd5("123");
System.out.println(str);
}
}
⑷ hibernate有哪些配置文件
主要是兩類,
1)一個總體用的hibernate.cfg.xml,比如設置資料庫用戶名、密碼、常量、映射文件位置等等信息的地方,這個文件整個hibernate項目只用一個就可;
2)每個實體映射都有一個***.hbm.xml文件,即實體映射文件,裡面寫的是資料庫和實體類的映射配置,包含關系映射或繼承映射等等;比如Student.java實體類就用Student.hbm.xml這個映射文件;所以一個hibernate項目往往有多個配置文件。不過這些配置也可以以註解(Annotation)形式寫在實體類裡面。hibernate支持標準的JPA標准註解。
⑸ hibernate連寫資料庫時,如何設置
Hibernate與各種資料庫連接的配置
1. Oracle連接配置
Oracler資料庫的hibernate在配置文件中配置。
連接部分
<!--驅動程序-->
<property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<!-- JDBC URL -->
<property name="connection.url">jdbc:oracle:thin:@localhost:1521:dbname</property>
<!--資料庫用戶名-->
<property name="connection.username">test</property>
<!--資料庫密碼-->
<property name="connection.password">test</property>
上例使用的驅動類為:oracle.jdbc.driver.OracleDriver,開發人員需要將相關的jar包(ojdbc14.jar)加入到classpath中。
2. MySql連接配置
MySql資料庫的hibernate連接設置,在hibernate.cfg.xml文件中
<hibernate-configuration>
<session-factory>
<!--各屬性的配置-->
<!—為true表示將Hibernate發送給資料庫的sql顯示出來 -->
<property name="show_sql">true</property>
<!-- SQL方言,這邊設定的是MySQL -->
<property name="dialect">net.sf.hibernate.dialect.MySQLDialect</property>
<!--一次讀的資料庫記錄數 -->
<property name="jdbc.fetch_size">50</property>
<!--設定對資料庫進行批量刪除 -->
<property name="jdbc.batch_size">30</property>
<!--驅動程序-->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- JDBC URL -->
<property name="connection.url">jdbc:mysql://localhost/dbname?
characterEncoding=gb2312</property>
<!--資料庫用戶名-->
<property name="connection.username">root</property>
<!--資料庫密碼-->
<property name="connection.password">root</property>
<!—映射文件 -->
<mapping resource="com/amigo/pojo/User.hbm.xml"/>
<mapping resource="com/amigo/pojo/Org.hbm.xml"/>
</session-factory>
</hibernate-configuration>
上面使用的驅動類是com.mysql.jdbc.Driver.需要將MySql的連接器jar包(eg. mysql-connector-java-Dbname為資料庫名字5.0.4-bin.jar)加入到classpath中。
3. Sql Server連接配置
Sql Server資料庫的hibernate在配置文件中配置。
連接部分
<!--驅動程序-->
<property name="connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<!-- JDBC URL -->
<property
name="connection.url">jdbc:jtds:sqlserver://localhost:1433;DatabaseName=dbname</property>
<!--資料庫用戶名-->
<property name="connection.username">sa</property>
<!--資料庫密碼-->
<property name="connection.password"></property>
上例的驅動類使用的是jtds的驅動類,因此讀者需要將jtds的jar包(eg. jtds-1.2.jar)加入到classpath中
4. DB2連接配置
DB2資料庫的hibernate在配置文件中配置。
連接部分
<!--驅動程序-->
<property name="connection.driver_class"> com.ibm.db2.jdbc.app.DB2Driver</property>
<!-- JDBC URL -->
<property
name="connection.url"> jdbc:db2://localhost:5000/sample </property> //sample為資料庫名
<!--資料庫用戶名-->
<property name="connection.username">admin</property>
<!--資料庫密碼-->
<property name="connection.password"></property>
上例使用的驅動類為:com.ibm.db2.jdbc.app.DB2Driver,開發人員需要將相關的jar包(db2jcc.jar)加入到classpath中。
5.sybase連接配置
sybase資料庫的hibernate在配置文件中配置。
連接部分
<!--驅動程序-->
<property name="connection.driver_class">com.sybase.jdbc.SybDrive</property>
<!-- JDBC URL -->
<property
name="connection.url"> jdbc:sybase:Tds:localhost:5007/myDB</property> ;//myDB為資料庫名
<!--資料庫用戶名-->
<property name="connection.username">userid</property>
<!--資料庫密碼-->
<property name="connection.password">user_password</property>
上例使用的驅動類為:com.sybase.jdbc.SybDrive,開發人員需要將相關的jar包(jconn3.jar)加入到classpath中。
6. informix連接配置
informix資料庫的hibernate在配置文件中配置。
連接部分
<!--驅動程序-->
<property name="connection.driver_class">com.informix.jdbc.IfxDrive</property>
<!-- JDBC URL -->
<property
name="connection.url">jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver </property> ;//myDB為資料庫名
<!--資料庫用戶名-->
<property name="connection.username">testuser</property>
<!--資料庫密碼-->
<property name="connection.password">testpassword</property>
上例使用的驅動類為:com.informix.jdbc.IfxDrive,開發人員需要將相關的jar包(ifxjdbc.jar)加入到classpath中。
7.PostgreSQL連接配置
PostpreSQL資料庫的hibernate在配置文件中配置。
連接部分
<!--驅動程序-->
<property name="connection.driver_class">org.postgresql.Driver</property>
<!-- JDBC URL -->
<property
name="connection.url">jdbc:postgresql://localhost/myDB</property>;//myDB為資料庫名
<!--資料庫用戶名-->
<property name="connection.username">myuser</property>
<!--資料庫密碼-->
<property name="connection.password">mypassword</property>
上例使用的驅動類為:com.informix.jdbc.IfxDrive,開發人員需要將相關的jar包(postgresql-8.1-405.jdbc3)加入到classpath中。
8.access連接配置
access資料庫的hibernate在配置文件中配置。
連接部分
<!--驅動程序-->
<property name="connection.driver_class">sun.jdbc.odbc.JdbcOdbcDriver</property>
<!-- JDBC URL -->
<property
name="connection.url">jdbc:odbc:Driver={MicroSoft..Access..Driver(*.mdb)};DBQ="+application.getRealPath("/Data/ReportDemo.mdb")</property> ;//myDB為資料庫名
<!--資料庫用戶名-->
<property name="connection.username">myuser</property>
<!--資料庫密碼-->
<property name="connection.password">mypassword</property>
⑹ hibernate.properties和hibernate.cfg.xml的區別
hibernate.properties和hibernate.cfg.xml的區別
<img src=img/china.jpg border=0 usemap="#Map" />
<map name=Map id="Map">
<area shape="poly" coords="567,417,562,420,557,420,552,422,552,431,549,437,545,442,546,452,538,460,538,468,543,473,551,483,556,486,563,492,574,477,581,468,588,455,589,441,597,429,594,425,586,423,577,425,574,423,569,415,fg580,441,580,422" href="img/onepiece.jpg" />
<area shape="poly" coords="619,456,617,459,610,471,606,478,604,487,604,497,610,506,615,511,621,496,626,472,626,461,617,479" href="test3." />
hibernate.cfg.xml和hibernate.properties的區別
1. 如果採用properties文件作為配置文件
那麼初始化的代碼大致為:
Configuration config = new Configuration();
config.addClass(myclass.class);
2. 如果配置文件為XML,則
Configuration config = new Configuration().config();
XML文件格式的配置文件不支持addClass方法!
這是因為在配置文件XML文件中,已經定義了Mapping文 件,因此就不需要在用編碼方式導入POJO文件了。
hibernate.cfg.xml在哪
項目需要構建一個Java環境,使用Hibernate作為數據持久層,一兄弟按照網上的說法配置了hibernate,結果搞了幾天都沒搞好,總是報錯「Could not find datasource」,最後還是我自己動手在自己機器上配個環境才引導他弄好。
要配好Hibernate首先的弄清楚Java在尋找hibernate.cfg.xml這個文件的時候在哪些目錄中尋找,Java將在以下目錄中尋找hibernate.cfg.xml這個文件:
webappsname/WEB-INF/classes/
TOMCATHOME/
TOMCATHOME/lib
所以我們的hibernate.cfg.xml務必放在webapp的WEB-INF/classes/目錄下了,放在其他目錄下都不是很合適。
另外就是關於hibernate.cfg.xml中的jdbc配置了,網上的說法各異,其實最簡單的就是在hibernate.cfg.xml中直接使用jdbc配置了,如下:
<?xml version=」1.0″ encoding=」utf-8″?>
<!DOCTYPE hibernate-configuration PUBLIC 「-Hibernate/Hibernate Configuration DTD 3.0EN」 「:hibernate.sourcefe./hibernate-configuration-3.0.dtd」>
<hibernate-configuration>
<session-factory>
<property name=」hibernate.connection.driver_class」>.mysql.jdbc.Driver</property>
<property name=」hibernate.connection.url」>jdbc:mysql:localhost/test</property>
<property name=」hibernate.connection.username」>root</property>
<property name=」hibernate.connection.password」 />
<property name=」show_sql」>false</property>
<property name=」dialect」>.hibernate.dialect.MySQLDialect</property>
<mapping resource=」hb/Cat.hbm.xml」 />
</session-factory>
</hibernate-configuration>
更改其中的driverclass和connection.url、username、password和dialect,再添加一些mapping就可以了,需要注意的是property節點的name屬性中最好在前面加上hibernate。有些文章說使用Tomcat的JNDI,不建議這么做。同時要注意的是在hibernate.cfg.xml不要同時使用datasource和連接字元串兩種配置(那個兄弟非要使用兩種配置結果來不成功),因為沒有必要。
其實從部署的角度來看的話,就應該是這樣的,首先在生產環境下,很多時候是沒有辦法拿到Tomcat的管理許可權的是配不了JNDI的,而且要去配JNDI無形增加的部署的難度,在hibernate.cfg.xml中配置連接字元串就很方便部署(Hibernate要是像.中那樣支持連接字元串加密就好了)。hibernate.cfg.xml存放的位置也是一樣的,放在WEB-INF/classes/目錄下,部署的時候只要拷貝webapp整個目錄就可以完成部署了。
網上的文章用來做參考最好,很多東西還得靠自己領會,特別是碰到問題的時候,盡心書不如無書嘛(也別太相信我寫的,說不定那天不管用了。^_^)。
附:使用Tomcat JNDI 數據源配置方法
<?xml version=」1.0″ encoding=」utf-8″ ?>
<!DOCTYPE hibernate-configuration PUBLIC 「-Hibernate/Hibernate Configuration DTD 3.0EN」 「:hibernate.sourcefe./hibernate-configuration-3.0.dtd」>
<hibernate-configuration>
<session-factory>
<property name=」hibernate.connection.datasource」>java:p/env/jdbc/odbcq</property>
<property name=」show_sql」>false</property>
<property name=」dialect」>.hibernate.dialect.MySQLDialect</property>
<mapping resource=」hb/Cat.hbm.xml」 />
</session-factory>
</hibernate-configuration>
參考博客::blogs./haquanwen/p/3812611.
ireport 中 hibernate.cfg.xml not found, 怎麼把hibernate.cfg.xml包括進classpath,只能import jar包
在對應的工程右鍵新建一個hibernate.cfg.xml 就OK!
hibernate.cfg.xml放在哪
放到那不重要,關鍵用的時候你得找到(一般都放到根目錄下)
sessionFactory = new Configuration().configure("/hibernate.cfg.xml").buildSessionFactory();
hibernate.cfg.xml文件中怎麼引入properties文件
在實際開發中一般都是hibernate.properties和hibernate.cfg.xml結合使用。一般在屬性文件hibernate.properties中存放資料庫連接相關的操作數據,在hibernate.cfg.xml文件中存放映射配置,在Users.hbm.xml(.hbm.xml之前的Users時自定義的,可以一個實體類對應一個.hbm.xml文件,也可以多個實體類對應一個.hbm.xml文件)。
之前是將屬性和映射配置都存放在hibernate.cfg.xml,如下:
[java]view plain
-
<spanclass="page_speeder_714273920"><!DOCTYPEhibernate-configurationPUBLIC
-
"-Hibernate/HibernateConfigurationDTD3.0EN"
-
":hibernate./dtd/hibernate-configuration-3.0.dtd">
-
<hibernate-configuration>
-
<session-factory>
-
<!--配置資料庫訪問信息-->
-
<propertyname="dialect">
-
.hibernate.dialect.MySQLDialect
-
</property>
-
<propertyname="connection.driver_class">
-
.mysql.jdbc.Driver
-
</property>
-
<propertyname="connection.url">
-
jdbc:mysql:localhost:3306/o
-
</property>
-
<propertyname="connection.username">
-
root
-
</property>
-
<propertyname="connection.password">
-
root
-
</property>
-
<!--在控制台顯示sql語句-->
-
<propertyname="show_sql">true</property>
-
<!--自動生成或更新資料庫表-->
-
<propertyname="hbm2ddl.auto">update</property>
-
<!--注冊映射文件-->
-
<mappingresource="/study/po/Users.hbm.xml"/>
-
</session-factory>
-
</hibernate-configuration></span>
- 上面這種方式來定義屬性和映射配置是可以,但是現在開發是將屬性定義和映射配置分開,這樣可以使得結果更加清晰,需要修改屬性就去hibernate.properties文件修改,需要修改映射配置就在hibernate.cfg.xml中去修改。
-
<spanclass="page_speeder_714273920">hibernate.dialect=.hibernate.dialect.MySQLDialect定義方言(定義優化的sql語句)
-
hibernate.connection.driver_class=.mysql.jdbc.Driver
-
hibernate.connection.url=jdbc:mysql:localhost:3306/firstdb?characterEncoding=utf8
-
hibernate.connection.username=root
-
hibernate.connection.password=root
-
hibernate.show_sql=true表示是否輸出操作資料庫的語句
-
hibernate.format_sql=true表示是個格式化輸出sql語句
-
hibernate.hbm2ddl.auto=update表示是否根據映射文件自動創建資料庫表</span>
- 註:hibernate.hbm2ddl.auto的值為create表示每次運行都會新建表;值為create-drop是在關閉SessionFactory時刪除仙劍表;值為update(常用值)時表示如果第一運行時資料庫沒有對應表,那麼會新建表,但是如果存在對應數據表,就不再創建對應的數據表。
-
<spanclass="page_speeder_714273920"><!DOCTYPEhibernate-configurationPUBLIC
-
"-Hibernate/HibernateConfigurationDTD3.0EN"
-
":hibernate./dtd/hibernate-configuration-3.0.dtd">
-
<hibernate-configuration>
-
<session-factory>
-
<!--注冊映射文件-->
-
<mappingresource="/study/po/Users.hbm.xml"/>
-
</session-factory>
-
</hibernate-configuration></span>
- 3.在Users.hbm.xml中配置持久化(實體,pojo)類和資料庫表的映射:
-
<spanclass="page_speeder_714273920"><?xmlversion="1.0"?>
-
<!DOCTYPEhibernate-mappingPUBLIC
-
"-Hibernate/HibernateMappingDTD3.0EN"
-
":hibernate./dtd/hibernate-mapping-3.0.dtd">
-
<hibernate-mappingpackage=".study.po">
-
<classname=".study.po.Users"table="users">
-
<!--主鍵-->
-
<idname="id"column="id">
-
<!--主鍵生成方式:自動生成-->
-
<generatorclass="native"/>
-
</id>
-
<propertyname="username"column="usernames"type="java.lang.String"not-null="true"/>
-
<propertyname="password"column="passwords"type="java.lang.String"not-null="true"/>
-
</class>
-
</hibernate-mapping></span>
- 上面是Users.hbm.xml中具體數據,配置內容可以依照如下格式:
-
<spanclass="page_speeder_714273920"><hibernate-mapping屬性=」值」>
-
<classname="類名"table="表名">
-
<!--主鍵-->
-
<idname="主鍵屬性名"column="表主鍵列名">
-
<!--主鍵生成方式-->
-
<generatorclass="生成方式"/>
-
</id>
-
<propertyname="屬性"column="列名"type="數據類型"not-null="true"/>
-
<propertyname="password"column="passwords"type="java.lang.Integer"not-null="true"/>
-
</class>
-
</hibernate-mapping></span>
- 主鍵:在Hibernate中持久化類都會有一個標識屬性,用於標識實例的唯一,該屬性映射到資料庫表的主鍵。
- 主鍵生成器:<generator class="生成方式"/>
比如:
1.在hibernate.properties中配置連接資料庫需要的屬性:
[java]view plain
2.在hibernate.cfg.xml中進行映射配置(注冊映射文件):
[java]view plain
[java]view plain
[java]view plain
生成方式的值有:
increment:表示獲取資料庫中表最大主鍵值,並+1後作為新的主鍵。
identity:自動增長,主要使用在mysql,db2。
native:(開發中一般選擇此方式)自動增長,Hibernate會根據資料庫從identity,sequence(序列),hilo(高低演算法)中選擇一種合適的方式生成主鍵,在mysql中時使用identity,在Oracle中時選擇sequence(序列)。
uuid:使用UUID演算法生成字元串類型主鍵(主要用於分布式部署)。
數據表各欄位配置:<property name=屬性 column="列名" type=數據類型 not-null="true"/>,實體類的屬性與資料庫表中列名(欄位名)對應,在給定數據類型時最好寫上此數據類型對應的包名(寫上全名)。
hibernate.cfg.xml到哪復制
不是復制的
在eclipse的項目里 新建--》其他-->找到Hibernate--》Hibernate Configuration File
設置好後會自動生成的
hibernate.cfg.xml是什麼東西?有什麼用?hibernate.xml呢?與hibernate.xml的區別是什麼?
hibernate.cfg.xml中寫的是鏈接資料庫的四個信息,在Myeclipse開發工具中是可以自動生成的,名字也可以自己定,它的默認名字就是hibernate.cfg.xml,加上個.cfg就是為了明顯看出是個配置文件,名字無所謂,
javaweb怎麼添加hibernate.cfg.xml
只要你能找到,放在哪裡都可以。sessionFactory = new Configuration().configure("WEB-INF/hibernate.cfg.xml").buildSessionFactory();
hibernate實現有兩種配置,xml配置與注釋配置。
一、hibernate.cfg.xml
<?xml version=Ƈ.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC "-Hibernate/Hibernate Configuration DTD 3.0EN" ":hibernate.sourcefe./hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!--url信息-->
<property name=connection.url>jdbc:mysql:localhost:3306/webases</property>
<!--資料庫方言信息-->
<property name=dialect>.hibernate.dialect.MySQLDialect</property>
<!--用戶名-->
<property name=connection.username>root</property>
<!--密碼-->
<property name=connection.password>123456</property>
<!--資料庫驅動信息-->
<property name=connection.driver_class>.mysql.jdbc.Driver</property>
<!--指定Hibernate映射文件路徑-->
<mapping resource="/Hibernate/order.hbm.xml" />
</session-factory>
</hibernate-configuration>
二、註解方式:
首先是需要加入4個jar包:hibernate-mons-annotations.jar 、 hibernate-annotations.jar、ejb3-persistence.jar 、 hibernate-jpa-2.0-api-1.0.1.Final.jar
不同的地方:
(1):hibernate.hbm.xml 文件中把引用:xxx.hbm.xml改為引用實體類:
即把:<mapping resource="/wsw/hibernate/model/Order.hbm.xml"/>
改為:<mapping class=".wsw.hibernate.model.Order" />
(2):獲取SessionFactory方式發生了變化:
即:由SessionFactory sf = new Configuration().configure().buildSessionFactory()
改為:SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory()
(3):註解方式不需要在xxx.hbm.xml把實體類與表進行映射。而採用在實體類中進行註解。
注意:(1):如果實體類屬性名與表欄位名不一致的時候,要麼都註解在屬性前,要麼都註解在get方法前。不能部分註解在屬性前,部分註解在方法前。
(2):如果實體類屬性名與表欄位名一致的時候,可以部分註解在屬性前,部分註解在方法前。
(3):如果在實體類中某些屬性不註解:(屬性和get都不寫註解),默認為表欄位名與實體類屬性名一致。
(4):如果實體類的某個成員屬性不需要存入資料庫中,使用@Transient 進行註解就可以了。即類似於:(xxx.hbm.Xml配置中的某些欄位不寫(就是不需要對這個成員屬性進行映射))
(5):表名稱可以在實體類前進行註解。
(6):所有這些註解在:javax.persistence包下。而不是在hibernate包中。
哪裡使用hibernate.cfg.xml
你的工程是自動編譯的嗎?把這個類考到你的程序里然後hibernate.cfg.xml放到src下試試import.hibernate.Session;import.hibernate.SessionFactory;import.hibernate.cfg.Configuration;publilassHibernateUtils{;(){returnsessionFactory;}publicHibernateUtils(){}static{Configurationcfg=newConfiguration();cfg.configure();sessionFactory=cfg.buildSessionFactory();}publicstaticSessiongetSession(){returnsessionFactory.openSession();}publicstaticvoidmain(String[]args){sessionFactory=HibernateUtils.getSessionFactory();System.out.println(sessionFactory);}}
⑺ (不限語言Java C# C都可以)簡單點的文件夾加密工具軟體源代碼
閃曉風我推薦你用文件夾加密超級大師,文件夾加密超級大師支持所有windows系統,
可以加密文件夾,加密文件,保護磁碟和數據粉碎,使用起來非常方便。
在需要加密的文件和文件夾上單擊滑鼠右鍵選擇加密就可以了。
解密時只要雙擊加密的文件夾和文件,輸入正確的密碼就可以解密。
文件夾加密超級大師加密後的文件和文件夾可以防止刪除、復制和移動。
相對於其他的文件夾加密軟體和文件加密軟體,功能和性能還有操作都更加的出色。
並且有微軟、360和金山的安全認證,是一款絕對安全的文件夾加密軟體。
閃曉風您可以到網路上下載文件夾加密超級大師來給您的文件和文件夾加密,看看使用效果怎麼樣?
⑻ jasypt mybatis嗎
jasypt既然是以簡單的方式來解決java開發中的加密問題,自然使用起來難度不是很大。加密是從系統安全性方面考慮的,因此jasypt更像是面向方面的解決辦法,不管你的系統中配置文件,敏感信息是否已經加密或者沒有加密,jasypt都能夠輕松的嵌入其中,開發人員就不用專門考慮加密演算法和代碼的編寫。
要想深入了解jasypt是如何將加密解密和摘要演算法組織起來,輕松的解決開發中加密問題以及和第三方組件集成,查看它的源代碼是不錯的選擇。
下面主要說說如何在Spring框架中如何輕松使用jasypt。(下面的加密機是對jasypt中的加密解密,摘要演算法的統稱)
第一種方式:以bean的形式將加密機(即:加密類的實例對象)交給Spring託管
第二種方式:以配置XML的形式將加密機與Spring集成。
第一種方式:
1.託管一個StandardPBEStringEncryptor加密機
<!-- 加密機 -->
<bean id="strongEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="algorithm">
<value>PBEWithMD5AndTripleDES</value>
</property>
<property name="password">
<value>${user.home}</value>
</property>
</bean>
這里的屬性"password"的值為系統屬性的值,實際開發中在對某一個數據進行加密的時候這個password是要進行記錄的,如果password在這里設置之後將默認提供了一個password的取值。
其它的屬性設置可以參見: http://aiilive.blog.51cto.com/1925756/1420837 這篇文章中關於jasypt命令行工具的介紹。
在程序中使用strongEncrypt加密機對象:
@Test
public void test1() {
StandardPBEStringEncryptor spe = (StandardPBEStringEncryptor) context
.getBean("strongEncryptor");
String src = "admin@123";
String encrypt = spe.encrypt(src);
System.out.println("src=\'#\'" //加密解密
Assert.assertEquals(decrypt, src);
}
2.託管一個StandardStringDigester加密機
<!-- 摘要演算法 -->
<bean id="digestEncryptor" class="org.jasypt.digest.StandardStringDigester">
<property name="algorithm">
<value>MD5</value>
</property>
</bean>
在程序中使用digestEncryptor加密機對象
@Test
public void test7() {
StandardStringDigester ssd = (StandardStringDigester) context
.getBean("digestEncryptor");
String rs1 = ssd.digest("admin");
String rs2 = ssd.digest("admin");
System.out.println(rs1 + " [vs] " + rs2);
//判斷是否匹配
Assert.assertTrue(ssd.matches("admin", rs1));
}
StrandardStringDigester類提供了matches方法用來檢測原始數據和進行摘要計算後的數據是否匹配。
1,2介紹了數據的處理,下面3講介紹使用jasypt對配置文件進行處理.
3.使用jasypt對配置文件進行處理
比如資料庫連接的屬性值一般要進行加密處理,然後在程序運行時對其進行解密連接資料庫,這樣就保證了在程序代碼已經配置中資料庫的連接相關敏感數據不至於明文暴露。
jasypt是如何處理這一過程的呢?
首先,配置環境變數(這里指用來加解密的環境),
然後,通過環境變數來裝載加密機,
最後,使用jasypt對Spring的org.springframework.beans.factory.config.PropertyPlaceholderConfigurer類的子類來配置屬性文件替換配置。
下面是具體的配置信息:
<!-- 基於環境變數,配置加密機 -->
<bean id=""
class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
<!-- <property name="passwordEnvName" value=""/> -->
<!-- <property name="passwordSysPropertyName" value=""></property> -->
<property name="password" value="sa" />
</bean>
<!-- 配置加密器,將用於解密 -->
<bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config" ref="" />
</bean>
<!-- 外部屬性文件配置 -->
<bean id="propertyConfigurer"
class="org.jasypt.spring31.properties.">
<constructor-arg ref="configurationEncryptor" />
<property name="locations">
<list>
<value>classpath:db.properties</value>
</list>
</property>
</bean>
<!--數據源配置, jasypt的將確保${dataSource.password}是解密 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>${dataSource.driver}</value>
</property>
<property name="url">
<value>${dataSource.url}</value>
</property>
<property name="username">
<value>${dataSource.username}</value>
</property>
<property name="password">
<value>${dataSource.password}</value>
</property>
</bean>
說明:
EnvironmentStringPBEConfig 中的屬性
passwordEnvName, passwordSysPropertyName,password
三者的區別是:
passwordEnvName的值直接設置為環境變數,比如value="APP_PASSWORD", APP_PASSWORD則是系統環境變數,在實際生產環境中建議使用這個屬性,具體使用步驟如:配置環境變數APP_PASSWORD --> 啟動應用程序 --> 應用程序啟動完成 --> 刪除環境變數APP_PASSWORD。
passwordSysPropertyName的值就是用 System.getProperties() 獲取的屬性值,比如:value="${user.home}"
password和使用jasypt命令行工具時的password參數用法一致。
屬性配置文件加密
dataSource.driver=org.postgresql.Driver
dataSource.url=jdbc:postgresql://localhost:5432/dbname
dataSource.username=postgres
#dataSource.password=postgres
dataSource.password=ENC()
這里將password的加密結果放置在ENC(機密結果)中,注意這樣的寫法是jasypt的規定,可以查看源代碼,在解密過程中會根據這個標志對屬性配置文件中的加密數據進行解密。
屬性配置文件中的機密結果產生則需要用jasypt的命令行工具(具體使用可以參見:http://aiilive.blog.51cto.com/1925756/1420837 ),這里要注意的是加密過程中的演算法,password參數值需要和Spring配置文件中的(bean)的屬性取值保持一致。
數據源中使用屬性配置信息中的值
以前Spring中怎麼使用,現在就怎麼使用。
jasypt和Spring集成的依賴
jasypt.jar+jasypt-springx-x.jar , x表示一些版本信息。
第二種方式
第一種方式將jasypt中的類作為bean的形式在Spring中應用,第二種方式則更加強大,有獨立的XML配置命名空間,更像是Spring的一部分。
首先需要在Spring的配置文件中添加jasypt的命名空間。
配置完成jasypt的命名空間就可以在Spring的配置文件中直接進行加密機,加密機參數配置,下面是一個示例:
<!-- 基本的密碼加密機 -->
<encryption:basic-password-encryptor id="bpe" scope="singleton" />
<!-- 摘要配置 -->
<encryption:digester-config id="digester-config" algorithm="SHA-256" algorithm-env-name=""/>
<!-- 字元串摘要機 -->
<encryption:string-digester id="sd" algorithm="MD5" config-bean="digester-config"/>
<!-- 加密機配置 -->
<encryption:encryptor-config id="encryptor-config" algorithm="PBEWITHMD5ANDTRIPLEDES"/>
<!-- 字元串加密機 -->
<encryption:string-encryptor id="se" algorithm="PBEWITHMD5ANDDES" config-bean="encryptor-config"/>
<!-- 加密的屬性佔位符 -->
<encryption:encryptable-property-placeholder encryptor="se" location="classpath:db.properties"/>
第二種方式同樣可以實現方式一中的功能。
通過介紹了jasypt和Spring集成的兩種方式可以看出使用jasypt能夠比較輕松自定義加密的參數,配置文件的加解密,整個過程對於應用程序的代碼侵入性是很小的,可以在程序中使用jasypt提供的加密演算法和方法來實現對需要加密的數據進行處理。
此外jasypt與Hibernate集成則以一個完全對程序邏輯透明的方式可以在ORM映射中對數據進行加解密。
最後jasypt也是開放的,它開放了JCE Provider API,允許開發者使用任何存在的JCE Provider在jasypt中進行消息摘要和加密處理。
⑼ java 對資料庫properties文件加密
可以通過其它方法來實現:
1:如果沒用框架,直接加密、解密即可
2:如果用hibernate之類,可以繞過Configuration,讀取Hibernate配置文件解密後再連接資料庫
3:考慮集群影響
⑽ mysql給密碼欄位加密
insert into tbname values(password('pwd'));---------新增的時候也可以用password函數轉一下編碼的