哈希碼生成的基礎:哈希碼不是完全唯壹的,它是壹種算法,允許同壹類的對象根據其不同的特性盡可能具有不同的哈希碼,但並不意味著不同對象的哈希碼完全不同。事實也是如此,這取決於程序員如何編寫哈希代碼算法。
擴展數據:
方法應用
equals方法在hibernate中的應用。
equals方法是判斷兩個對象是否相等的默認方法,它在object類中實現,判斷兩個對象的內存地址。在hibernate中,同類對象中不允許有兩個相同的實例。Hibernate通過equals方法進行判斷。比如:
用戶u1 =新用戶(“張三”);
用戶u2 =新用戶(“Lisi”);
用戶u3 =新用戶(“張三”);
根據項目的要求,只要用戶具有相同的名稱,就意味著相同的用戶,因此認為u1和u3是同壹個人和同壹對象。但是因為U1、U2和U3的內存地址都不同,hibernate會認為這是三個不同的對象。這與假設相矛盾。因此,Object類中的equals方法將被重寫。
公共類用戶{
私有字符串用戶名;
...//get、set方法保存。
//重寫Object中的equals方法。
公共布爾等於(對象arg 0 ){
如果(!(用戶的arg0實例)({
返回false
}
User User =(User)arg 0;
//如果名稱相同,則它們屬於同壹個對象。
if(user . getname()。等於(this . getname)){
返回true
}否則{
返回false}
}
這樣,hibernate插入數據時,如果傳遞了壹個名為“張三”的用戶,hibernate將首先判斷是否存在名為“張三”的用戶。如果沒有用戶,則允許插入,如果有,則不允許插入。這樣做可以保證數據的高度壹致性,不同的項目有不同的要求,所以您應該根據自己的需要覆蓋equals方法。
百度百科-哈希碼