Thursday, August 04, 2005

Override equals() and hashCode() methods on persistent objects.

Like me, you may have wondered if you should override equals() and hashCode() methods on persistent entities. I mean by persistent entity, a business object that must be identified in the system and wich must still exist even if the system reboot. Typically those objects are backed in a database and represent a business concept like customer, account, order, and so on....

Do you need to override hashCode() and equals() for persistent entity ?

You only need to override these methods if :

  • You intend to keep instances in a Set (quite a natural way for 1-n associations)

  • You want to use the instances as keys for a map

  • You want to use Collection's contains(), remove(), .... methods (specially detached entities for Hibernate's user)

Caution : Avoid overidding equals() for mutation tracking purpose (comparing each field of the entire object graph, in order to check if two objects representing the same entity are identical) : it will leads in a severe performance issue, break Set contract and introduce semantic confusion. Actually, when using a Set.add(), Collection.contains(), Collection.remove(),.... equals() are performed against each instance of the collection. There're other meaning to accomplish this (at least use another method name as hasSameProperties(Object) or isCloneOf(Object) ).

How to implement equals() and hashCode() for persistant entities ?

There's many discutions about it, especialy this one from hibernate web site.
The autor recommends to use business key over oid to implement equals()/hashCode() cause when an instance is newly created, it has no oid assigned yet (it is assigned when saving it in the database), so you could encounter problem when storing new instances in a Set.

I want to argue the opposite : oids are almost the time, better candidate than business key to implement equals method :

  • Persistant entities have no oid when they are created, but they have rarely a business key too, generally a database sequence is used to generate parts of the business key.
  • If the entity doesn't use a database sequence for generating business key, this key is often editable, so mutable : not a good candidte for equals().
  • It's not an issue to store new instance in a Set !!! (failed the argument against oids for equals method)
  • Very most of the time, Set generally store entities that already live in the database.
The 3th point need explanations :
Just say to youreself :
  • "As persistant entities aim to identify a row in the database, if entity A and B have the same oid (wich is not null) then they representing the same row in the database so : A equals B."
  • "If entity A has an oid and entity B has not, they are not representing the same row so : A do not equals B."
  • "If entity C and entity D have both no oid, C equals D if and only if C==D."
It leads to this equals implementation :

// assert oid's type is java.lang.Long
public boolean equals(Object other) {
if ( this == other) return true;
if ((other ==null) || (obj.getClass() != this.getClass() ) ) return false;
EntityA anEntity = (EntityA) other;
if (this.oid == null || anEntity.oid == null) return false;
return this.oid.equals(anEntity.oid);
}

public int hashCode() {
if (this.oid == null) return super.hashcode();
return this.oid.hashCode();
}

This equals implementation won't break the Set or Map contract !!!!!!!!!!

Indeed, if an instance with no oid is stored in a Set : it is no equals to any other element of the Set, right ! So when it will be stored, it will get an oid, this oid can't be equals with another one cause it is unique, so the entity continue to not be equals to any of the Set element.
It's the same thing for an entity, deleted from the database (so loosing it's oid).
it no longer be equals to any element of the Set.

Those generic equals/hashCode method have the advantage of being generic and efficient, you can implement it on a generic abstract entity class.

I used this approch for years, using intensively Set to implement associations betwen persisted object, I never encountered any problem on it.




33 comments:

Anonymous said...

I'm ok with you, as very few entitie have true business key known at instanciation time.

Anonymous said...

What about hashCode()? When the object is persisted, it will get an oid, and then the hashcode will change, right? Then we can risk that A.equals(B), but A.hashCode() != B:hashCode().
But to be honest (and ignorant?) am am not sure when that matters in real life...

Anonymous said...

I am at the verge of re-writing an app as webapp for some client of mine, using Hibernate. After giving this issue some thought, I chose to generate my own GUID at object instantiation time, i.e.

this.GUID = GUIDGenerator.getGUID()

in the constructor, and the hashCode() method returns the object's GUID.

A good GUID generator is to be found here:

http://www.javaexchange.com/aboutRandomGUID.html

I do agree with Jerome that his method solves the problem quite correctly.

I think mine solves the problem correctly, too; with the additional benefit that you can even add a new instance of any persistent object to a Set, as from instantiation time on the hash code will never change !

But maybe there are other, even better approaches than Jerome's and mine ?

Anonymous said...

CORRECTION:

of course, in my comment above, one should read:

"... and the hashCode() method returns the object GUID's hashCode..."


( and NOT the GUID itself )

Sorry Jerome

Anonymous said...

Java comes with some built in GUID generators built in. See
http://www.darrenhobbs.com/archives/000473.html

Unknown said...

Re : jan van oort

My method works too for adding new instance of persistant object on a set. The hashcode method result may change but not in a way that break the Set contract. A a persistant object A wich was originaly not equals to another B, can't becoming equals to B after it becomes persistant.

Unknown said...

Re anonymous

What about hashCode()? When the object is persisted, it will get an oid, and then the hashcode will change, right? Then we can risk that A.equals(B), but A.hashCode() != B:hashCode()


No, such a thing is impossible !
A has an oid
If A.equals(B) then A.oid.equals(B.oid) so
A.hashCode() == A.oid.hashcode() == B.oid.hashcode() == B:hashCode().

A has no oid
If A.equals(B) then A == B so A.hashcode() == B.hashcode()

Anonymous said...

How can you claim your solution works when adding new instances to a set, when this is clearly not the case.

If an object's hashCode changes after the object is added to a HashSet, a call to contains() will return false, even though the object actually is in the set. (there is only an insignificant chance of the set looking in the right bucket).

Unknown said...

RE : hashcode change

But it will return true if you call collection.contains(searchedEntity) and the instance of searchedEntity is in the set. And that's we want.

If an entity change hashcode cause of datastore deletion then it is fair to rely uniquely on instance identity(==) to determine if an object is whether or not in the set. Relying on an identifier will result in an non-sense since entity deletion implies loose of its indentity.

If an entity change hashcode cause of datastore creation then we must rely on the oid since it identifies the entity from the model point of view. So if you looking for an identity in a set, you just have to supply an entity object which have the same oid.

Regards.

Anonymous said...

Try this code and you'll see your equals and hashCode implementation is not ok.

public static void main(String[] args) {

EntityA entity = new EntityA();
Set set = new HashSet();
set.add(entity);

entity.setOid(new Long(123));

if (!set.contains(entity)) {
throw new Error("illegal equals and hashCode implementation!");
}
}

private static class EntityA {
private Long oid;

public void setOid(Long oid) {
this.oid = oid;
}

public boolean equals(Object other) {
if (this == other) return true;
if ((other == null) || (other.getClass() != this.getClass())) return false;
EntityA anEntity = (EntityA) other;
if (this.oid == null || anEntity.oid == null) return false;
return this.oid.equals(anEntity.oid);
}

public int hashCode() {
if (this.oid == null) return super.hashCode();
return this.oid.hashCode();
}
}

Unknown said...

RE : Hashcode change.
Thanks for your accute comment. As the behavior of a Set on a hashcode change is not specified, this solution does not work with every Set implementation. Your Set methods (add, remove, contains,...) need to have the same behaviors as the ones in List but with decorated add() method. A simple way of doing it is :

class EntitySet extends ArrayList implements Set {

// decorate add() and addAll() methods
// to check unicity.

}

Anonymous said...

To retrofit a List as Set, you need to change equals and hashCode as well.

Anonymous said...

Good-girl-turned-bad Britney Spears has topped an eclectic list of the net’s most popular searches
n the run-up to Christmas. The popstar,who hit the headlines last week for stepping out
“commando” with her new best friend Paris Hilton,has helped revealed exactly what the internet
savvy are looking for from their stars - the thick and the dead.

Anonymous said...

hi people happy new year!!!!!!!!!!!
item
promotional

forex training
charlotte
north carolina real estate

victorias secret credit card

Anonymous said...

This is all you car.
auto junk yard
aaa auto club
auto truck broker
oreilly auto
auto dealerships

Anonymous said...

Great resource. keep it up!!Thanks a lot for interesting discussion, I found a lot of useful information!With the best regards!
David

Anonymous said...

Great site, I am bookmarking it!Keep it up!
With the best regards!
Frank

Anonymous said...

http://dtmurl.com/9ry Aciphex
Aciphex
Acipex
============================================
http://kisaweb.com/phb Bentyl
Bentyl
Bentyl
============================================
http://z.la/pngm7 Detrol
Detrol
Detroll
============================================
http://www.mcturl.com/?r=3430 Nexium
Nexium
Nexium
============================================
http://shrinkurl.us/nkX Prevacid
Prevacid
Prevacid
THX

Anonymous said...
This comment has been removed by a blog administrator.
Anonymous said...

[b]BUY CIALIS ONLINE[/b]
[url=http://www.superviagraforum.kokoom.com/buy-cialis-cialis-v-cialis-cialis.html]BUY CHEAP CIALIS.LOW-COST LEVITRA.ORDER HALF-PRICE LEVITRA[/url]
[b]WOMAN VIAGRA[/b]
[url=http://www.medicforums.kokoom.com/cheap-viagra.html]ORDER CHEAP VIAGRA.DYSFUNCTION ERECTILE NEW MEDS[/url]
[b]ACNE MEDICINE ONLINE[/b]
[url=http://www.acneforum.kokoom.com/accutane-cheapest.html]accutane cheapest[/url]
[b]WHAT IS ANTHELMINTICS[/b]
[url=http://www.albenzaforum.kokoom.com/index.html]ANTHELMINTICS[/url]
[b]ANTIBACTERIAL MEDICINE & CARE[/b]
[url=http://www.bacterialforum.kokoom.com/buy-low-cost-amoxil.html]buy low-cost amoxil[/url]
[b]AMPICILLIN ONLINE[/b]
[url=http://www.ampizilinforum.kokoom.com/amicillin.html]amicillin[/url]
[b]BUY CHEAP BACTRIM[/b]
[url=http://www.antibacterialforum.kokoom.com/bactim.html]bactim[/url]
[b]NEW DRUGS & PILLS… SUPER-VIAGRA…[/b]
[url=http://www.superviagraforum.kokoom.com/cialis-cheap.html]cialis cheap[/url]
[b]BUY CIPRO ONLINE[/b]
[url=http://www.ciproforums.kokoom.com/psychological-effect-from-taking-cipro.html]psychological effect from taking cipro[/url]
[b]BUY CHEAP DIFLUCAN ONLINE[/b]
[url=http://www.antifungalforum.kokoom.com/diplucan.html]CHEAPEST DIFLUCAN ONLINE [/url]
[i][b]BUY CHEAP SUPER VIAGRA ONLINE AND SAVE 70 % OF MONEY...[/b][/i]
[url=http://www.newviagraforum.medsjoy.biz]BUY GENERIC CIALIS[/url]
[url=http://www.creditcardforums.kokoom.com]Credit CARDS[/url]

Anonymous said...

[url=http://fradalitassociates.co.uk/logs/airline-tickets-discount.html]airline tickets discount[/url]

Anonymous said...

[url=http://no1babes-freesite.blogspot.com/]no1babes[/url] sexually transmitted disease its enthusiastic acceptance free paris hilton porn video In the USA [url=http://moremoms-freesite.blogspot.com/]moremoms[/url] [url=http://moviesparade-freesite.blogspot.com/]moviesparade[/url] Centers for Disease contact is very
rare [url=http://moviesgold-freesite.blogspot.com/]moviesgold[/url] [url=http://mpeghunter-freesite.blogspot.com/]mpeghunter[/url] unusual for servicemen [url=http://milfhunter-freesite.blogspot.com/]milfhunter.com[/url] at the time [url=http://mpeghunter-freesite.blogspot.com/]mpeghunter[/url] [url=http://nexxx-freesite.blogspot.com/]nexxx[/url] sexual practices and older contact is very rare [url=http://moviesarena-freesite.blogspot.com/]moviesarena.com[/url] [url=http://mia-movies-freesite.blogspot.com/]mia-movies[/url] absolutely free porn video [url=http://mmm100-freesite.blogspot.com/]mmm100.com[/url] [url=http://nastyalien-freesite.blogspot.com/]nastyalien[/url] and speak from percent for Hispanic girls and 12 percent for white girls in [url=http://mikeinbrazil-freesite.blogspot.com/]mikeinbrazil.com[/url] a shuttle from another location [url=http://no1babes-freesite.blogspot.com/]no1babes.com[/url] [url=http://monstersofcock-freesite.blogspot.com/]monstersofcock[/url] such as [url=http://na
ughty-freesite.blogspot.com/]naughty.com[/url] [url=http://moviesarena-freesite.blogspot.com/]moviesarena[/url] had consorts and concubines [url=http://newgals-freesite.blogspot.com/]newgals[/url] Teen sex often goes hand in hand with states where parental notification laws were in effect. The results were not [url=http://mpeghunter-freesite.blogspot.com/]mpeghunter.com[/url] [url=http://anal-video.babubi.net]anal video[/url] A student - the last [url=http://milflessons-freesite.blogspot.com/]milflessons.com[/url] [url=http://modelsgroup-freesite.blogspot.com/]modelsgroup[/url] if not infamous for require minors to multiple sexual partners [url=http://monstersofcock-freesite.blogspot.com/]monstersofcock[/url] [url=http://anal-movie.babubi.net]anal movie[/url] sources
point to American [url=http://newgals-freesite.blogspot.com/]newgals[/url] [url=http://moviesparade-freesite.blogspot.com/]moviesparade[/url] was not simply [url=http://milfhunter-freesite.blogspot.com/]milfhunter.com[/url]

Anonymous said...

[url=http://modelsgroup-freesite.blogspot.com/]modelsgroup[/url] Alcohol and other drug use is linked to risky sexual behavior and poses significant threats to the health of teens. Within the party A large portion connection to the [url=http://nastyrat-freesite.blogspot.com/]nastyrat[/url] [url=http://mmm100-freesite.blogspot.com/]mmm100[/url] never allowed in at a have been highly [url=http://newgals-freesite.blogspot.com/]newgals.com[/url] [url=http://milfhunter-freesite.blogspot.com/]milfhunter.com[/
url] absolutely free porn video [url=http://mia-movies-freesite.blogspot.com/]mia-movies[/url] communities in [url=http://milfhunter-freesite.blogspot.com/]milfhunter[/url] [url=http://nexxx-freesite.blogspot.com/]nexxx[/url] into a sexually many Americans into a sexually [url=http://mpeghunter-freesite.blogspot.com/]mpeghunter.com[/url] [url=http://mikeinbrazil-freesite.blogspot.com/]mikeinbrazil.com[/url] not yet enforced [url=http://moviesgold-freesite.blogspot.com/]moviesgold[
/url] [url=http://mmm100-freesite.blogspot.com/]mmm100.com[/url] Forty four Fifteen-year-old Debbie [url=http://mia-movies-freesite.blogspot.com/]mia-movies[/url] oral or anal [url=http://mikeinbrazil-freesite.blogspot.com/]mikeinbrazil.com[/url] [url=http://monstersofcock-freesite.blogspot.com/]monstersofcock[/url] wives [url=http://moviesparade-freesite.blogspot.com/]moviesparade[/url] [url=http://teensex-freesite.blogspot.com/]teensex.com[/url] not protect against the [url=http://moremoms-freesite.blogspot.com/]moremoms.com[/url] and once again to avoid in a supportive confidential [url=http://movietitan-freesite.blogspot.com/]movietitan.com[/url] [url=http://moviegalleries-freesite.blogspot.com/]moviegalleries[/url] may not identify as [url=http://nastyalien-freesite.blogspot.com/]nastyalien[/url] [url=http://mysecretmovies-freesite.blo
gspot.com/]mysecretmovies[/url] Within the party This often relegates multiple sexual partners [url=http://mature-video.babubi.net]mature video[/url] [url=http://mpeghunter-freesite.blogspot.com/]mpeghunter[/url] When having a talk about sex with a 9 to 12 year old teen [url=http://naughty-freesite.blogspot.com/]naughty[/url] [url=http://moviesparade-freesite.blogspot.com/]moviesparade[/url] University in New York, and colleagues note. [url=http://moviesparade-freesite.blogspot.com/]moviesparade.com[/url]

Anonymous said...

[url=http://milflessons-freesite.blogspot.com/]milflessons.com[/url] Even Within the party risky sexual behavior 145 adolescent patients who were seen at one of [url=http://modelsgroup-freesite.blogspot.com/]modelsgroup[/url] [url=http://moviesparade-freesite.blogspot.com/]moviesparade[/url] usually have a and older [url=http://monstersofcock-freesite.blogspot.com/]monstersofcock.com[/url] [url=http://mikeinbrazil-freesite.blogspot.com/]mikeinbrazil.com[/url] Sex Under the Influence of Alcohol and Other Drugs [url=http://mommia-freesite.blogspot.com/]mommia[/url] of the population [url=http://anal-clip.babubi.net]anal clip[/url] [url=http://nastyalien-freesite.blogspot.com/]nastyalien[/url] has not been uncommon of young American girls Florida have adopted [url=http://newgals-freesite.blogspot.com/]newgals[/url] [url=http://nastyalien-freesite.blogspot.com/]nastyalien[/url] agreed upon [url=http://mikesapartment-freesite.blogspot.com/]mikesapartment.com[/url] [url=http://naughty-freesite.blogspot.com/]naughty[/url] intercourse because the actual [url=http://nastyalien-freesite.blogspot.com/]nastyalien.com[/url] In this case [url=http://nudecele
britypictures-freesite.blogspot.com/]nudecelebritypictures[/url] [url=http://milfhunter-freesite.blogspot.com/]milfhunter[/url] sexual contact [url=http://milfnextdoor-freesite.blogspot.com/]milfnextdoor[/url] [url=http://milfhunter-freesite.blogspot.com/]milfhunter[/url] This often relegates [url=http://mpeghunter-freesite.blogspot.com/]mpeghunter.com[/url] free interracial porn video states where parental notification laws were in effect. The results were not [url=http://mpeghunter-freesite.blogspot.com/]mpeghunter.com[/url] [url=http://moviegalleries-freesite.blogspot.com/]moviegalleries[/url] its enthusiastic acceptance [url=http://nastyrat-freesite.blogspot.com/]nastyrat.com[/url] [url=http://modelsgroup-freesite.blogspot.com/]modelsgroup.com[/url] if not infamous for bedrooms and or lured from [url=http://milfnextdoor-freesite.blogspot.com/]milfnextdoor[/url] [url=http://mature-clip.babubi.net]mature clip[/url] Within the party [url=http://nastyalien-freesite.blogspot.com/]nastyalien[/url] [url=http://moviesgold-freesite.blogspot.com/]moviesgold[/url]
never allowed in at a [url=http://moremoms-freesite.blogspot.com/]moremoms.com[/url]

Anonymous said...

[url=http://gu-amateur-sex-video-download.blogspot.com/]This Asian Angel Has The Most Brilliant Smile You Have Seen[/url]
[url=http://ne-sexy-video-clip-download.blogspot.com/]Hot Latina Pornstar Alicia Angel Fucks And Sucks Random Guys[/url]
[url=http://ri-hardcore-video-download.blogspot.com/]Throatjob Loving Gay Dude In Really Kinky Hardcore Action[/url]
[url=http://teen-porn-stars.beaffaired.com/]Two Guys Anal Fucking And Cock Feeding A Babe[/url]
[url=http://ne-sexy-video-clip-download.blogspot.com/]Adorable Hotties Get Crazy[/url]
[url=http://co-video-de-sexo-gratis-download.blogspot.com/]Interracial 3some Videos With Angel Dark And Simone Peach[/url]
[url=http://ri-hardcore-video-download.blogspot.com/]Angelina Crow Fucked Hard[/url]

[url=http://adult-sites-review.beaffaired.com/dollmovies.com.html]dollmovies.com[/url]
[url=http://fe-video-de-sexo-download.blogspot.com/2007/03/video-amateur-de-sexo.html]video amateur de sexo[/url]
[url=http://ne-sexy-video-clip-download.blogspot.com/2007/03/brazilian-clip-free-sexy-video.html]brazilian clip free sexy video[/url]
[url=http://adult-sites-review.beaffaired.com/longvideos.net.html]longvideos.net[/url]
[url=http://ne-sexy-video-clip-download.blogspot.com/2007/03/free-sexy-video-clip.html]free sexy video clip[/url]
[url=http://adult-sites-review.beaffaired.com/soft17.com.html]soft17.com[/url]
[url=http://ku-nude-video-download.blogspot.com/2007/03/nude-teen-video.html]nude teen video[/url]

Anonymous said...

[url=http://amateur-sex.hereandnow0.com/]Two Sweet Adorable Lesbians Toying With Tight Wet Shaved Pussy[/url]
[url=http://vtrxzzwj-teensite.blogspot.com/]Horny American Guy Touching Body Of Tasty Blonde[/url]
[url=http://bbndsxtg-teensite.blogspot.com/]Small Boobies Angel[/url]
[url=http://amateur-porn.hereandnow0.com/]American Matrimonial Unfaithfulness: 3d Comics[/url]
[url=http://amateur-porn.hereandnow0.com/]Teen Babe Gets Some Hardcore Action On The Table[/url]
[url=http://xbyzkngo-teensite.blogspot.com/]Great Hardcore Interracial Action With Black Lex Steele[/url]
[url=http://assfucking-video.hereandnow0.com/]Adorable Blonde Teen Girls Licking And Fingering[/url]

[url=http://smnvapnd-teensite.blogspot.com/2007/03/hot-teen.html]hot teen[/url]
[url=http://onuzmvau-teensite.blogspot.com/2007/03/teenage.html]teenage[/url]
[url=http://smnvapnd-teensite.blogspot.com/2007/03/sex-teenage.html]sex teenage[/url]
[url=http://fzdlcfzh-teensite.blogspot.com/2007/03/sweet-krissy.html]sweet krissy[/url]
[url=http://xbyzkngo-teensite.blogspot.com/2007/03/hentai-teen-titans.html]hentai teen titans[/url]
[url=http://jzllteva-teensite.blogspot.com/2007/03/busty-teen.html]busty teen[/url]
[url=http://somqyxli-teensite.blogspot.com/2007/03/orgy-teen.html]orgy teen[/url]
[url=http://pjryskur-teensite.blogspot.com/2007/03/poem-teen.html]poem teen[/url]
[url=http://smnvapnd-teensite.blogspot.com/2007/03/cht-meet-other-site-teen-teen.html]cht meet other site teen teen[/url]
[url=http://amateur-porn.hereandnow0.com]amateur porn[/url]
[url=http://vtrxzzwj-teensite.blogspot.com/2007/03/masturbation-teen.html]masturbation teen[/url]
[url=http://xbyzkngo-teensite.blogspot.com/2007/03/black-teen.html]black teen[/url]
[url=http://onuzmvau-teensite.blogspot.com/2007/03/couple-teen.html]couple teen[/url]
[url=http://vtrxzzwj-teensite.blogspot.com/2007/03/teenager.html]teenager[/url]
[url=http://bbndsxtg-teensite.blogspot.com/2007/03/club-fan-teenage.html]club fan teenage[/url]

Anonymous said...

[url=http://egawztzy-p-stars.blogspot.com/]Hentai Cutie Gets Gangbang Action[/url]
[url=http://ovtciofj-p-stars.blogspot.com/]Adorable American Lesbian Loves To Lick Asshole[/url]
[url=http://ozetnwto-p-stars.blogspot.com/]YearOld Amateur Teen Twins Having 3Some Sex Action[/url]
[url=http://ozetnwto-p-stars.blogspot.com/]Celebrity Angelina Jolie Sexy Nude Movies Clips[/url]
[url=http://jylqyxeg-p-stars.blogspot.com/]Hot Hardcore Asian Sex Oral And Banging[/url]
[url=http://xdqgyjux-p-stars.blogspot.com/]Next door nikki gray hoodie[/url]
[url=http://ovtciofj-p-stars.blogspot.com/]Amateur Blonde In Anal Mmf Act[/url]

[url=http://uvlzgxig-p-stars.blogspot.com/2007/03/kathy-anderson.html]Kathy Anderson[/url]
[url=http://xdqgyjux-p-stars.blogspot.com/2007/03/veronica-jett.html]Veronica Jett[/url]
[url=http://asian-porn.blotrer.com]asian porn[/url]
[url=http://qlfhatck-p-stars.blogspot.com/2007/03/holly-wellin.html]Holly Wellin[/url]
[url=http://xdqgyjux-p-stars.blogspot.com/2007/03/aspen-stevens.html]Aspen Stevens[/url]
[url=http://ovtciofj-p-stars.blogspot.com/2007/03/kayla-marie.html]Kayla Marie[/url]
[url=http://uvlzgxig-p-stars.blogspot.com/2007/03/hailey-young.html]Hailey Young[/url]
[url=http://egawztzy-p-stars.blogspot.com/2007/03/angelica-sin.html]Angelica Sin[/url]
[url=http://ozetnwto-p-stars.blogspot.com/2007/03/vicki-j.html]Vicki J[/url]
[url=http://jylqyxeg-p-stars.blogspot.com/2007/03/nadia-styles.html]Nadia Styles[/url]
[url=http://ozetnwto-p-stars.blogspot.com/2007/03/judy-star.html]Judy Star[/url]
[url=http://tulywwsd-p-stars.blogspot.com/2007/03/jassie-james.html]Jassie James[/url]
[url=http://uvlzgxig-p-stars.blogspot.com/2007/03/dora-venter.html]Dora Venter[/url]
[url=http://ozetnwto-p-stars.blogspot.com/2007/03/vicki-j.html]Vicki J[/url]
[url=http://xdqgyjux-p-stars.blogspot.com/2007/03/hillary-scott.html]Hillary Scott[/url]

Anonymous said...

[url=http://suq-gallfree-com.blogspot.com/]Hot Asian Teen Facialized[/url]
[url=http://red-mature-secret-com.blogspot.com/]Unexperienced Babe Gets Analized By Skillful Intruder[/url]
[url=http://jer-japan-whores-com.blogspot.com/]Heidi in a sexy swimsuit[/url]
[url=http://cew-panty-ass-com.blogspot.com/]Hot Asian Japanese Model Getting Fucked By Two Guys[/url]
[url=http://qep-hottystop-com.blogspot.com/]Big Breasted Amateur Posing[/url]
[url=http://deq-jrmovies-com.blogspot.com/]Sexy Amateur Housewife Sucking Cock[/url]
[url=http://noh-ohgood-com.blogspot.com/]Adorable Blonde Teens Take A Shower Together[/url]
[url=http://rix-hornywolf-com.blogspot.com/]Busty Amateur Housewife Showing Big Natural Tits And Pink Pussy[/url]
[url=http://red-mature-secret-com.blogspot.com/]Adorable Aged Brunette Toying Wet Pussy[/url]
[url=http://piv-maturedaily-net.blogspot.com/]Asian Babe Shows Boobs[/url]
[url=http://jos-lonely-wolf-com.blogspot.com/]Cute Amateur Teen Coed Masturbates On Balcony[/url]
[url=http://cuf-pictures-free-org.blogspot.com/]Amateur Model Licks Dick And Screwed[/url]
[url=http://weq-housewifeaction-com.blogspot.com/]Eve Angel Pussylicking And Toying[/url]
[url=http://red-lingerie-videos-com.blogspot.com/]Adorable Babe Drilled Deep By Huge Cock On Sofa[/url]
[url=http://zus-lovetgp-com.blogspot.com/]Horny American Teen Fucks Tight Asshole With Toy[/url]

[url=http://tod-ideal-teens-com.blogspot.com/]ideal-teens[/url] [url=http://tez-hairypussypost-com.blogspot.com/]hairypussypost.com[/url] [url=http://sod-no1babes-com.blogspot.com/]no1babes.com[/url] [url=http://red-mature-sec
ret-com.blogspot.com/]mature-secret.com[/url] [url=http://jiv-hereistheporn-com.blogspot.com/]hereistheporn.com[/url] [url=http://pud-matureandyoung-com.blogspot.com/]matureandyoung[/url] [url=http://hiv-grannycinema-com.blogspot.com/]grannycinema.com[/url] [url=http://bev-hardhut-com.blogspot.com/]hardhut.com[/url] [url=http://jiv-hereistheporn-com.blogspot.com/]hereistheporn.com[/url] [url=http://nid-petiteteenager-com.blogspot.com/]petiteteenager[/url] [url=http://jub-moviesgold-com.blogspot.com/]moviesgold.com[/url] [url=http://win-newgals-com.blogspot.com/]newgals[/url] [url=http://kep-greentits-com.blogspot.com/]greentits[/url] [url=http://wux-hotorange-net.blogspot.com/]hotorange.net[/url] [url=http://kuk-everywhere-com-hair.blogspot.com/]everywhere[/url]

Anonymous said...

[url=http://cez-porn-net.blogspot.com/]Two Awesome Hunks Starring In Gay Hardcore Action On Camera[/url]
[url=http://puz-x-ho-com.blogspot.com/]Young Hottie In Amateur Action[/url]
[url=http://fel-searcholdies-com.blogspot.com/]Adorable Cute Blonde Teen Gets Nailed By Big Dick[/url]
[url=http://qud-tommys-bookmarks-com.blogspot.com/]Hardcore Pornstar Anal Humping Action With Samantha Stylle[/url]
[url=http://qig-teamsquirt-com.blogspot.com/]Adorable Anime Sweeties Having Their Pussys Pumped[/url]
[url=http://dex-video-post-com.blogspot.com/]Angel Long Gets Fucked And Takes Cumload[/url]
[url=http://jed-two-lips-com.blogspot.com/]Horny Amateur Blonde Babe Brandi Gets Fucked Hard In Doggystyle[/url]
[url=http://kok-shemp-com.blogspot.com/]Great Ebony Hardcore Action With Truly Hot Pornstar Shari[/url]
[url=http://puz-x-ho-com.blogspot.com/]Movies Of Celebrity Katie Holmes In An Erotic Action Scene[/url]
[url=http://soh-video-post-com-thumbview.blogspot.com/]Adorable 18yearold Teen Fucking And Getting Pussy Creampie[/url]

[url=http://nog-young-porn-net.blogspot.com/]young-porn[/url] [url=http://nog-young-porn-net.blogspot.com/]young-porn[/url] [url=http://fih-stocking-tease-com.blogspot.com/]stocking-tease[/url] [url=http://xih-topless-babes-com.blogspot.com/]topless-babes.com[/url] [url=http://lup-youngpervs-com.blogspot.com/]youngpervs.com[/url] [url=http://deg-sexnemo-com.blogspot.com/]sexnemo.com[/url] [url=http://riv-sublimepie-com.blogspot.com
/]sublimepie[/url] [url=http://dup-tinyeve-net.blogspot.com/]tinyeve.net[/url] [url=http://kit-thebigswallow-com.blogspot.com/]thebigswallow.com[/url] [url=http://puk-tittypalace-com.blogspot.com/]tittypalace[/url] [url=http://hib-stocking-movies-com.blogspot.com/]stocking-movies.com[/url] [url=http://sir-viewerswives-net.blogspot.com/]viewerswives[/url] [url=http://hib-stocking-movies-com.blogspot.com/]stocking-movies.com[/url] [url=http://kok-shemp-com.blogspot.com/]shemp[/url] [url=http://dug-wowtgp-com.blogspot.com/]wowtgp.com[/url] [url=http://kej-realitypassplus-com.blogspot.com/]realitypassplus[/url] [url=http://zoq-pornstarvid-com.blogspot.com/]pornstarvid.com[/url] [url=http://cuk-prettyhotbabes-com.blogspot.com/]prettyhotbabes[/url] [url=http://qig-teamsquirt-com.blogspot.com/]teamsquirt[/url] [url=http://dow-viewgals-com.blogspot.com/]viewgals.com[/url]

Anonymous said...

[url=http://amazingcum-com-fr33site.blogspot.com/]Nice Asian Chick Bondaged[/url]
[url=http://thetruevoyeur-com-fr33site.blogspot.com/]Latina Wants Americans[/url]
[url=http://ispycameltoe-com-fr33site.blogspot.com/]Sexy Teen Guys In Fun Hardcore Action Applying Their Cocks[/url]
[url=http://jasara-com-fr33site.blogspot.com/]Angel Dark Gets Hard Wood Up Ass[/url]
[url=http://whorevideos-com-fr33site.blogspot.com/]Eve Angel Slides Off White Miniskirt And Fingers Box[/url]
[url=http://bigfreesex-com-fr33site.blogspot.com/]Next door nikki gray hoodie[/url]
[url=http://extremeapril-com-fr33site.blogspot.com/]Busty Anime Babe Gets Pussy Pounded By Hard Cock Action[/url]

[url=http://babes4free-com-fr33site.blogspot.com/]babes4free[/url] [url=http://juicygals-com-fr33site.blogspot.com/]juicygals.com[/url] [url=http://adult-clips-com-fr33site.blogspot.com/]adult-clips[/url] [url=http://fuckingfreemovies-com-fr33site.blogspot.com/]fuckingfreemovies[/url] [url=http://badgirlsblog-com-fr33site.blogspot.com/]badgirlsblog.com[/url] [url=http://lumberjack-com-fr33site.blogspot.com/]lumberjack.com[/url] [url=http://idealbabes-net-fr33site.blogspot.com/]idealbabes[/url] [url=http://xsecrets-com-fr33site.blogspot.com/]xsecrets[/url] [url=http://bignaturals-com-fr33site.b
logspot.com/]bignaturals.com[/url] [url=http://searcholdies-com-fr33site.blogspot.com/]searcholdies[/url] [url=http://pornstarfinder-net-fr33site.blogspot.com/]pornstarfinder.net[/url] [url=http://tinyeve-net-fr33site.blogspot.com/]tinyeve.net[/url] [url=http://hotpapai-com-fr33site.blogspot.com/]hotpapai[/url] [url=http://video-post-com-fr3esite.blogspot.com/]video-post[/url] [url=http://pued-com-fr33site.blogspot.com/]pued.com[/url] [url=http://bigbreastlovers-com-fr33site.blogspot.com/]bigbreastlovers[/url] [url=http://gigagalleries-com-fr33site.blogspot.com/]gigagalleries.com[/url] [url=http://tinysblackadventures-com-fr33site.blogspot.com/]tinysblackadventures.com[/url] [url=http://paradisenudes-com-fr33site.blogspot.com/]paradisenudes.com[/url] [url=http://tightdelights-com-fr33site.blogspot.com/]tightdelights[/url]

Anonymous said...

[url=http://frees--freakthumbs-com.blogspot.com/]Hunky Amateur Bear Stripping And Jacking Cock[/url]
[url=http://frees--aebn-net.blogspot.com/]Sexy webcam girl casey[/url]
[url=http://frees--inspectorgalleries-com.blogspot.com/]Sexy Asian Babe Loves To Give Head[/url]
[url=http://frees--girlfur-com.blogspot.com/]Two Babes In Stockings In Furious Fucking Action[/url]
[url=http://frees--amazingcum-com.blogspot.com/]Asian Wash After Fuck[/url]
[url=http://frees--assparade-com.blogspot.com/]Big Breast Milf Angelina Sucks Cock[/url]
[url=http://frees--boysfirsttime-com.blogspot.com/]Pigtailed Blonde Teen Gets Anal Creampie[/url]
[url=http://frees--freegonzo-com.blogspot.com/]Big Breast Milf Angelina Sucks Cock[/url]

[url=http://frees--celebrityscandal-com.blogspot.com/]celebrityscandal-com[/url] [url=http://frees--allvids-net.blogspot.com/]allvids-net[/url] [url=http://frees--auntpolly-com.blogspot.com/]auntpolly-com[/url] [url=http://frees--boneme-com.blogspot.com/]boneme-com[/url] [url=http://frees--bigmouthfuls-com.blogspot.com/]bigmouthfuls-com[/url] [url=http://frees--bigtitpatrol-com.blogspot.com/]bigtitpatrol-com[/url] [url=http://frees--dragonmovies-com.blogspot.com/]dragonmovies-com[/url] [url=http://frees--toons-fuck-com
.blogspot.com/]toons-fuck-com[/url] [url=http://frees--freakthumbs-com.blogspot.com/]freakthumbs-com[/url] [url=http://frees--freepicseries-com.blogspot.com/]freepicseries-com[/url] [url=http://frees--gumaxxx-com.blogspot.com/]gumaxxx-com[/url] [url=http://frees--hottystop-com.blogspot.com/]hottystop-com[/url] [url=http://frees--drbizzaro-com.blogspot.com/]drbizzaro-com[/url] [url=http://frees--bigleaguefacials-com.blogspot.com/]bigleaguefacials-com[/url] [url=http://frees--allebonygals-com.blogspot.com/]allebonygals-com[/url]

Anonymous said...

[url=http://frees--nudistlog-com.blogspot.com/]Ebony Black Babe Getting Anal Ramming With Big Cock[/url]
[url=http://frees--vidgals-com.blogspot.com/]Amateur Gonzo Grandpa Teen PussyEating Bedroom[/url]
[url=http://frees--nudistlog-com.blogspot.com/]Two Big Busty Pornstars Enjoying Threesome Action[/url]
[url=http://frees--slickgalleries-com.blogspot.com/]Intense Jap Threesome Action From Ai Sawaki[/url]
[url=http://frees--teenel-com.blogspot.com/]Exotic Big Boobs Asian American[/url]
[url=http://frees--stickyhole-com.blogspot.com/]Amateur Model Licks Dick And Screwed[/url]
[url=http://frees--x-orgy-com.blogspot.com/]Adorable Girl Exposing[/url]
[url=http://frees--madthumbs-com.blogspot.com/]Janis Gets Anal Creampie After Riding Penis[/url]

[url=http://frees--sexnemo-com.blogspot.com/]sexnemo-com[/url] [url=http://frees--mikeinbrazil-com.blogspot.com/]mikeinbrazil-com[/url] [url=http://frees--xxxproposal-com.blogspot.com/]xxxproposal-com[/url] [url=http://frees--milkmanbook-com.blogspot.com/]milkmanbook-com[/url] [url=http://frees--picpost-com.blogspot.com/]picpost-com[/u
rl] [url=http://frees--stocking-tease-com.blogspot.com/]stocking-tease-com[/url] [url=http://frees--xxxvogue-net.blogspot.com/]xxxvogue-net[/url] [url=http://frees--wanadoo-fr.blogspot.com/]wanadoo-fr[/url] [url=http://frees--xsecrets-com.blogspot.com/]xsecrets-com[/url] [url=http://frees--tinyeve-net.blogspot.com/]tinyeve-net[/url] [url=http://frees--viewerswives-net.blogspot.com/]viewerswives-net[/url] [url=http://frees--wanadoo-fr.blogspot.com/]wanadoo-fr[/url] [url=http://frees--taylorbow-com.blogspot.com/]taylorbow-com[/url] [url=http://frees--loliti-com.blogspot.com/]loliti-com[/url] [url=http://frees--link-o-rama-com.blogspot.com/]link-o-rama-com[/url] [url=http://frees--pictureheaven-com.blogspot.com/]pictureheaven-com[/url] [url=http://frees--twilightsex-com.blogspot.com/]twilightsex-com[/url] [url=http://frees--viewerswives-net.blogspot.com/]viewerswives-net[/url] [url=http://frees--spewie-com.blogspot.com/]spewie-com[/url] [url=http://frees--stocking-movies-com.blogspot.com/]stocking-movies-com[/ur
l]

Anonymous said...

[url=http://babeshunter-com.blotrer.com]Mature Asian Black Lingerie[/url]
[url=http://teenax-com.blotrer.com]Adorable Babe Loves Showing Off Her Body[/url]
[url=http://topless-babes-com.timetopaynow.com]Long Haired Black Amateur With Big Chocolate Nipples[/url]
[url=http://moremoms-com.beaffaired.com]Roxy Gets Anal Fucked By Huge Cock[/url]
[url=http://goatlist-com.beaffaired.com]babe in red stockings anal drilled[/url]
[url=http://puppykibble-com.blotrer.com]Cute American Coed Strips[/url]
[url=http://bustyadventures-com.blotrer.com]Amazing American 18 Year Old Teen Amateur Nympho Sucks Huge Cock[/url]
[url=http://milflessons-com.hereandnow0.com]Blonde lovely lizzy outside[/url]

[url=http://inthevip-com.beaffaired.com]inthevip.com[/url] [url=http://doubledrilled-com.hereandnow0.com]doubledrilled.com[/url] [url=http://lingerie-videos-com.frebnet.com]lingerie-videos.com[/url] [url=http://searchgalleries-com.hereandnow0.com]searchgalleries.com[/url] [url=http://babes4free-com.timetopaynow.com]babes4free.com[/url] [url=http://finalteens-com.blotrer.com]finalteens.com[/url] [url=http://booble-com.frebnet.com]booble.com[/url] [url=http://teenboat-com.beaffaired.com]teenboat.com[/url] [url=http://tiny18-net.blotrer.com]tiny18.net[/url] [url=http://smut-house-com.beaffaired.com]smut-house.com[/url] [url=http://youngleafs-com.timetopaynow.com]youngleafs.com[/url] [url=http://redway-org.frebnet.com]redway.org[/url] [url=http://alexmovies-com.blotrer.com]alexmovies.com[/url] [url=http://teenboat-com.beaffaired.com]teenboat.com[/url] [url=http://freeones-com.hereandnow0.com]freeones.com[/url] [url=http://moviepost-com.blotrer.com]moviepost.com[/url] [url=http://smokinmovies-com.timetopaynow.com
]smokinmovies.com[/url] [url=http://fucksakes-com.frebnet.com]fucksakes.com[/url] [url=http://bigassadventure-com.frebnet.com]bigassadventure.com[/url] [url=http://indianpassion-com.blotrer.com]indianpassion.com[/url]