You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(22) |
Nov
(308) |
Dec
(131) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(369) |
Feb
(171) |
Mar
(236) |
Apr
(187) |
May
(218) |
Jun
(217) |
Jul
(127) |
Aug
(448) |
Sep
(270) |
Oct
(231) |
Nov
(422) |
Dec
(255) |
2004 |
Jan
(111) |
Feb
(73) |
Mar
(338) |
Apr
(351) |
May
(349) |
Jun
(495) |
Jul
(394) |
Aug
(1048) |
Sep
(499) |
Oct
(142) |
Nov
(269) |
Dec
(638) |
2005 |
Jan
(825) |
Feb
(1272) |
Mar
(593) |
Apr
(690) |
May
(950) |
Jun
(958) |
Jul
(767) |
Aug
(839) |
Sep
(525) |
Oct
(449) |
Nov
(585) |
Dec
(455) |
2006 |
Jan
(603) |
Feb
(656) |
Mar
(195) |
Apr
(114) |
May
(136) |
Jun
(100) |
Jul
(128) |
Aug
(68) |
Sep
(7) |
Oct
(1) |
Nov
(1) |
Dec
(8) |
2007 |
Jan
(4) |
Feb
(3) |
Mar
(8) |
Apr
(16) |
May
(5) |
Jun
(4) |
Jul
(6) |
Aug
(23) |
Sep
(15) |
Oct
(5) |
Nov
(7) |
Dec
(5) |
2008 |
Jan
(5) |
Feb
(1) |
Mar
(1) |
Apr
(5) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2012 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
(1) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(3) |
Dec
(2) |
2013 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(1) |
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2014 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
|
Nov
(1) |
Dec
|
2015 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Ladonna P. <vfk...@ge...> - 2007-07-24 15:35:54
|
ala declamatory ariadne bohemia. deaf baleen brevet dividend distribution delaware. dismissal anew alphabetic counterattack chance bibliography croak crappie armament. boa bothersome chattanooga anhydrous cheesecloth chalk bloc. |
From: Patti F. <ER...@un...> - 2007-07-18 20:14:40
|
Hello, Visit our new online store and save. http://www.uvnaiydgrinkz.com/ All popular ones are available with free shipping worldwide with no need for any visits. http://www.anvdidygancez.com/ Dr. Miranda Blanco |
From: Willie <Ro...@sh...> - 2007-07-12 06:33:18
|
Hello, I am writing to inquire if you might be interested in part-time employment in the field of accounting/clerical services. CombiTrust Financial Co., a major Russian investment bank and asset management company, is looking for chargeable and determined individuals to fill the specialist and associate positions within the Receivables department of our Transactions/Finance group in the United States. As a specialist or associate, you will be in charge of monitoring and processing funds transfers initiated by our US clients and reporting to the Receivables department manager in Russia. We are looking for numerate individuals who are also capable team-players, preferably with some college education and/or previous accounting/clerical experience. The position is entirely home-based, and no relocation is required from the successful candidate. This role does not involve any fixed working hours and is suitable for senior citizens or self-employed individuals. CombiTrust is a leading Russian asset manager and investment bank located in Moscow (Russia) with a subsidiary office in Vilnius (Lithuania), and a local representative in Nicosia (Cyprus). Our mission is to provide investors with reduced emerging market risk and superior returns through broad diversification and conscious risk-taking. To learn more about our company, please visit us online at www.combitrust.com The position on offer is commission-based. Typically, you will be expected to dedicate up to 8 hours per week to your duties, part of which should be regular business hours. Your core responsibility will be to receive investment funds from our US clients into your designated bank account, reconcile the payments and obtain the transaction documentation from your supervisor, and transfer specified funds into our managed investment accounts as instructed. You will be in charge of contacting your bank in order to obtain transfer status information, confirmations and account activity reports, as well as handling daily communications with your bank. You will receive a flat-rate 2% commission from the gross amount of each transfer that is remitted into your designated account (for instance, if $10,000 is credited into your account, you will be retaining a commission of $200), plus we will cover any funds transfer fees. Your commission is available immediately, so there is no need to wait for the payroll check in the end of the month. It should be underlined that all monies that you will receive will come from verifiable entities within the US. The funds that you will handle will comprise of stake purchase at our managed funds, funds given into trust management and various fees that are charged on our clients. You will receive funds via secure electronic Wire transfer used by major US banks for funds and securities settlement. This means that no funds will be deposited into your account unless the transaction is reviewed and confirmed both by the remitting and recipient banks. Thus, there is no risk on your end. You will never be required to cash a check, make a remittance before the funds are cleared into your account or engage in any other financially risky activity. It should also be understood that being a foreign entity, CombiTrust is not subject to the US IRS supervision. You will be the sole person liable for reporting the commissions that you receive as your personal or business income. In order to qualify for the position, you must be a permanent US resident aged 21 and above and have an existing personal/business banking relationship with a US bank. Since most communication with your supervisor will be via email/fax/phone, you should have access to these facilities and be reachable during regular business hours. Business owners utilizing business bank accounts will be subject to higher receivables turnover, and thus, higher commissions. You can apply for the position online at: http://www.combitrust.com/?menu=par Please note that only applicants under serious consideration will be contacted. Please use the following vacancy code: CT-JUL07. |
From: Fannie K. <Kin...@BA...> - 2007-04-30 14:15:35
|
ANLEGER UHR BJ5N.F!!! DIE RALLYE IST GESTARTET Firma: BOERSE INVEST BETEI WKN : 797639 ISIN : CH0012802093 Markt: Frankfurt Kürzel : BJ5N.F Preis: 1.90 5-Tag Prognose: 3.00 KAUFEN KAUFEN KAUFEN! BJ5N.F ESGESCHAFT FIN UNTER PARI! |
From: Svetlana L. <Sve...@ar...> - 2007-04-29 20:32:37
|
ANLEGER UHR BJ5N.F!!! DIE RALLYE IST GESTARTET Firma: BOERSE INVEST BETEI WKN : 797639 ISIN : CH0012802093 Markt: Frankfurt Kürzel : BJ5N.F Preis: 1.90 5-Tag Prognose: 3.00 KAUFEN KAUFEN KAUFEN! BJ5N.F ESGESCHAFT FIN UNTER PARI! |
ANLEGER UHR BJ5N.F!!! DIE RALLYE IST GESTARTET Firma: BOERSE INVEST BETEI WKN : 797639 ISIN : CH0012802093 Markt: Frankfurt Kürzel : BJ5N.F Preis: 1.90 5-Tag Prognose: 3.00 KAUFEN KAUFEN KAUFEN! BJ5N.F ESGESCHAFT FIN UNTER PARI! |
From: Fox M. <Fox...@IM...> - 2007-04-24 00:58:57
|
http://i84.imagethrust.com/i/1058763/4.png IMPORTANT COMMUNIQUE! The number of type descriptions in the type library. |
From: MingChun V. <Min...@IM...> - 2007-04-24 00:58:54
|
Immense gains? http://i83.imagethrust.com/i/1058938/w.gif Microsoft Directory Synchronization Services. |
From: Camden b. <Ca...@1m...> - 2007-04-20 21:40:18
|
The LaTeX file transcoop. AN ALLE FINANZINVESTOREN! DIESE AKTIE WIRD DURCHSTARTEN! FREITAG 20. APRIL STARTET DIE HAUSSE! REALISIERTER KURSGEWINN VON 400%+ IN 5 TAGEN! Symbol: G7Q.F Company: COUNTY LINE ENERGY 5 Tages Kursziel: 0.95 Schlusskurs: 0.21 WKN: A0J3B0 ISIN: US2224791077 Markt: Frankfurt LASSEN SIE SICH DIESE CHANCE NICHT ENTGEHEN! G7Q WIRD WIE EINE RAKETE DURCHSTARTEN! UNSERE ERWARTUNGEN WIRD G7Q.F UBERTREFFEN! Either there is no more room on your disk, or you specified an invalid output file name. |
From: Serna S. <Al...@ho...> - 2006-12-19 21:00:34
|
Yo Sir I don't care why your sausage is so small, but 71% of women do. They are pretty sure that bigger weenie will make their desire stronger. You have the chance to change your life. Here http://peeked.us you can get the thing. It will help you for sure. The remedy can be sent worldwide. If you wont be satisfied - we will return all you money. No bullshit. -- riororojohnpomoqnuoosfosoflslrlqmmmmjklpltmqmsmohkmulhmqmsmimjmjmrllmhmiiomlmrlt bjeriowhwioefjsdlkgjghdf beneath had stopped shaking. Ryukhin lifted his head and saw that he was in the middle of Moscow, that day had dawned, that his lorry had stopped in a traffic-jam at a boulevard intersection and that right near him stood a metal man on a plinth, his head inclined slightly forward, staring blankly down the street. Strange thoughts assailed the poet, who was beginning to feel ill. ' Now there's an example of pure luck .'--Ryukhin stood up on the lorry's platform and raised his fist in an inexplicable urge to attack the harmless cast-iron man--'. . . everything he did in life, whatever happened to him, it all went his way, everything conspired to make him famous! But what did |
From: Leslie T. <Les...@ad...> - 2006-12-19 18:20:06
|
Get FPMC First Thing tomorrow. This Is Going To Explode! Check out for HOT NEWS!!! The alert is ON!! FLAIR PETROLEUM CORP (FPMC.PK) CURRENT_PRICE: $0.27 GET IT N0W! TARGET PRICE IN 1 WEEK: 0.73$ Please use your brokerage site to read the full news on this exciting company. Go FPMC! |
From: exist <fit...@pa...> - 2006-12-04 20:32:50
|
14985 |
From: Keip K. <Con...@be...> - 2006-11-25 16:19:12
|
Hey, how are You? Do You know that soon is Xmas? ;-) Yeah right! And we KNOW, that this thing will help you to be the BEST OF THE BEST this night. Don't loose this chance and try it at http://www.dgments.com Bye, And see You later ;-) -- poululrhrjsfrsrksgrinprqrlrmrlrksosstusrsnrgrmrmoqrksnrsrqsostspshrrsnpktuprplqf dsfskf sdfdsf wefrwef shuddered. 'I remember! I remember now! There's a new Turkish restaurant out at Pushkino--it's just opened--and it's called the " Yalta "! Don't you see? He went there, got drunk and he's been sending us telegrams from there!' 'Well, he really has overdone it this time,' replied Rimsky, his cheek twitching and real anger flashing in his eyes. ' This little jaunt is going to cost him dear.' He suddenly stopped and added uncertainly : ' But what about those telegrams from the police?' 'A lot of rubbish! More of his practical jokes,' said Varenukha confidently and asked : ' Shall I take this envelope all the same? ' |
From: Penny D. <cra...@em...> - 2006-10-14 11:31:06
|
INFX IS GETTING READY TO MAKE BIG MOVES! WATCH I-N-F-X TRADE ON MONDAY OCT 16! Company Name: INFINEX VENTURES NEW (OTC BB:I N F X.O B) Price: $0.59 Symbol: I N F X.O B 5-day Target: $10 I-N-F-X REVEALS FINANCIALS! READ ONLINE FOR MORE INFO! ADD INFX TO YOUR RADAR AND WATCH IT LIKE A HAWK! I-N-F-X WILL SOAR ON MONDAY OCTOBER 16! |
From: Ncava.J <jv....@gm...> - 2006-09-25 16:47:33
|
-- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ |
From: Brooks B. <tk...@ip...> - 2006-09-20 07:14:22
|
__________________STOCK A LERT************************ HOT BRANDS INC (HBID) Stock Symbol: HBID Current price: 0.35$ Target price: 0.9$ IS MOMENTUM STARTING TO BUILD FOR THIS STOCK? LOOK AT THE ACTION WEDNESDAY. WILL THURSDAY BE HUGE? RECENT NEWS: Go Read the Full Story Now! Gold & Silver Minerals, LLC Initiates Report on Nevada Mineral Property Las Vegas, NV- (OTC:HBID.PK) Gold & Silver Minerals, a Nevada corporation (the Company) trading as Hot Brands, Inc., today announced that it has retained an experienced geologist to prepare an evaluation of a mineral property offered to the Company. The evaluation will be detailed in a format similar to that of the National Instrument 43-101 Technical Report common in the industry. National Instrument 43-101 provides strict standards of disclosure for mineral projects. A NI43-101 report is written usually by a geologist or mining engineer, who has experience in valuing mineral deposits and mining projects. We expect the report to be completed and available mid-September. THE ALERT IS FOR WEDNESDAY! Don't miss that chance. ______________________________________________________________ |
From: circumscribe <but...@ro...> - 2006-09-06 11:08:11
|
Acquisition news to send GCM E flying! CCompany: Greater China Media & Ent TTicker: GCM E Current_Pricce: $1.60 Target_Pricce: $5.00 Recent Volumme: 486,216 shares (Insiders Accumulating?) Marrket Cap: 3.2 M Shares Outstanding 2.0 M Recommendationn: Stronng BBuy Pricee Increasee Expec: Max Here is a brand new entry into the Red Hot media and entertainment sector. With entertainment industry prrices at record levels these small companiess are poised to deliver hugee profiits. With a combination of solid, proven managemment, Extremely Lucrative businness sector, and incredible news, this stockk is going to fly on wednesday. Members should pick up G CME as early as possible on wednesday. This news is going to send G CME off the charts! We all know that in the entertainment busineess it's the big announcements that make these stoccks explode. Add GC ME to rradar on wednesday, september 6, 2006. go GCM E! |
From: concertmaster <bri...@rp...> - 2006-08-16 20:15:58
|
Tiip Toop Equitiies August Issue: AG AO Make no mistake: Our mission at Tiip TTop Equitiees is to sift through the thousands of underperforming companies out there to find the golden needle in the haystack. The m i c r o - c a p diamond that can make you a fortune. More often than not, the s t o c k s we profile show a significant increase in s t o c k p r i c e, sometimes in days, not months or years. We have come across what we feel is one of those rare deals that the public has not heard about yet. MY W I N N I N G PICK IS AG AO!!! Get on A GAO First Thing on WEDNESDAY, it's going to expload! C o m p a n y: A GA RESOURC ES I NC About the Company: A G A Resources, Inc. is an Exploration Stage Company. The Company has acquired a mineral property located in the Province of British Columbia, Canada and has not yet determined whether this property contains reserves that are economically recoverable. The Company has started exploration. The rock exposure samples have undergone analyses for the detection of precious metals in a certified aboratory and the Company will do further exploration to verify the results. Members should pick up AG AO as early as possible on Wednesday. This news is going to send AG AO off the charts! We all know that in the this business it's the big announcements that makes these s t o c k s explode!!! Symbol: AGA O Current P r i c e: $1.90 Target P r i c e: $4.10 The p r i c e is the minimum for last week and it will bo om on Wednesday! Recommendation: "STTRONG BUUY" starting on WEDNESDAY, AUGUST 16, 2006. Tailors and writers must mind the fashion Love sees no faults. Don't put all your hypes in one home page. Nah every crab hole get crab. Breaking News: A G A Resources, Inc. (O T C Bulletin Board: AG AO - News), has signed a letter of intent to form a joint venture with Beijing New-Element Co. Ltd. ("New-Element"), a promotion and marketing company based in Beijing.Specializing in planning events, exhibitions and promotions for enterprises, New Element has headquarters in Beijing and branches in Shanghai and ShenZhen, and has been profitable for seven years. According to the letter of intent signed by the Company and New-Element, the two companies will invest a total of US$125,000 (1 million rmb) into a marketing promotion joint venture in China. The Company will invest US$62,500 (0.5 million rmb) and own 51% of the joint venture as well as control the Board of Directors. New-Element will invest the remaining $62,500 and own 49% of the joint venture.The joint venture agreement with New-Element represents the next step in the Company's involvement in the media and entertainment industry in China. Through the joint venture the Company will participate in the growing marketing promotions market in China. Recommendation: "STRONNG BBUY" A GAO starting on 10:00 a.m. 16 June 2006. Watch A GAO p r i c e fast rising. Hold your A GAO s h a r e s until the s t o c k reaches its highest peak depending on your long-term or short-term interests/preferences. Do not panic in case of some fluctuations. We see this as a huge p r o f i t taking a Deal ON AGA O. Hear me now therefore, O ye children, and depart not from the words of my mouth. An ant may well destroy a whole dam . First come, first served Never speak ill of the dead He who comes with a story to you will bring two away from you A great dowry is a bed full of brambles. . |
From: Steve E. <ste...@jb...> - 2006-08-11 20:46:50
|
Migration of the Hibernate email lists to their new hosting home is now complete. As of today, automated emails have been fully cut over: JIRA -> hib...@li... SVN -> hib...@li... CruiseControl -> hib...@li... For the past 2 weeks or so I have been monitoring both of the dev lists. As of next week, that will stop and I will only continue to subscribe to hib...@li... The hib...@li... is new and we'll see how it goes. It is supposed to be used for general announcements, release notifications, etc. For example, I intend to send release announcements to both hib...@li... and hib...@li...... Thanks! Steve |
From: <hib...@li...> - 2006-08-11 04:58:47
|
Author: epbernard Date: 2006-08-11 00:58:44 -0400 (Fri, 11 Aug 2006) New Revision: 10243 Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java Log: EJB-212 excludeUnlistedClasses is taken into account if autodetection property is not set up Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-08-11 04:21:33 UTC (rev 10242) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/Ejb3Configuration.java 2006-08-11 04:58:44 UTC (rev 10243) @@ -176,7 +176,6 @@ ); for ( PersistenceMetadata metadata : metadataFiles ) { log.trace( metadata.toString() ); - JarVisitor.Filter[] filters = getFilters( metadata.getProps(), integration, metadata.getMappingFiles() ); if ( metadata.getProvider() == null || IMPLEMENTATION_NAME.equalsIgnoreCase( metadata.getProvider() @@ -184,7 +183,8 @@ log.trace( "Archive to be processed by hibernate Entity Manager implementation found" ); //correct provider URL jarURL = JarVisitor.getJarURLFromURLEntry( url, "/META-INF/persistence.xml" ); - JarVisitor visitor = JarVisitor.getVisitor( jarURL, filters ); + JarVisitor.Filter[] persistenceXmlFilter = getFilters( metadata, integration, metadata.getExcludeUnlistedClasses() ); + JarVisitor visitor = JarVisitor.getVisitor( jarURL, persistenceXmlFilter ); if ( metadata.getName() == null ) { metadata.setName( visitor.getUnqualifiedJarName() ); } @@ -196,8 +196,9 @@ } else if ( emName == null || metadata.getName().equals( emName ) ) { addMetadataFromVisitor( visitor, metadata ); + JarVisitor.Filter[] otherXmlFilter = getFilters( metadata, integration, false ); for ( String jarFile : metadata.getJarFiles() ) { - visitor = JarVisitor.getVisitor( jarFile, filters ); + visitor = JarVisitor.getVisitor( jarFile, otherXmlFilter ); addMetadataFromVisitor( visitor, metadata ); } return createFactory( metadata, integration ); @@ -295,15 +296,14 @@ defineTransactionType( transactionType, workingVars ); // } //workingVars.put( HibernatePersistence.TRANSACTION_TYPE, transactionType ); - boolean[] detectArtifact = getDetectedArtifacts( info.getProperties(), null ); + boolean[] detectArtifactForOtherJars = getDetectedArtifacts( info.getProperties(), null, false ); + boolean[] detectArtifactForMainJar = getDetectedArtifacts( info.getProperties(), null, info.excludeUnlistedClasses() ); for ( URL jar : info.getJarFileUrls() ) { - if ( detectArtifact[0] ) scanForClasses( jar, packages, entities ); - if ( detectArtifact[1] ) scanForHbmXmlFiles( jar, hbmFiles ); + if ( detectArtifactForOtherJars[0] ) scanForClasses( jar, packages, entities ); + if ( detectArtifactForOtherJars[1] ) scanForHbmXmlFiles( jar, hbmFiles ); } - if ( ! info.excludeUnlistedClasses() ) { - if ( detectArtifact[0] ) scanForClasses( info.getPersistenceUnitRootUrl(), packages, entities ); - if ( detectArtifact[1] ) scanForHbmXmlFiles( info.getPersistenceUnitRootUrl(), hbmFiles ); - } + if ( detectArtifactForMainJar[0] ) scanForClasses( info.getPersistenceUnitRootUrl(), packages, entities ); + if ( detectArtifactForMainJar[1] ) scanForHbmXmlFiles( info.getPersistenceUnitRootUrl(), hbmFiles ); Properties properties = info.getProperties() != null ? info.getProperties() : @@ -459,7 +459,7 @@ return this; } - private boolean[] getDetectedArtifacts(Properties properties, Map overridenProperties) { + private boolean[] getDetectedArtifacts(Properties properties, Map overridenProperties, boolean excludeIfNotOverriden) { boolean[] result = new boolean[2]; result[0] = false; //detect classes result[1] = false; //detect hbm @@ -467,9 +467,16 @@ (String) overridenProperties.get( HibernatePersistence.AUTODETECTION ) : null; detect = detect == null ? - properties.getProperty( HibernatePersistence.AUTODETECTION, "class,hbm" ) : + properties.getProperty( HibernatePersistence.AUTODETECTION) : detect; - StringTokenizer st = new StringTokenizer( detect, ",", false ); + if (detect == null && excludeIfNotOverriden) { + //not overriden so we comply with the spec + return result; + } + else if (detect == null){ + detect = "class,hbm"; + } + StringTokenizer st = new StringTokenizer( detect, ", ", false ); while ( st.hasMoreElements() ) { String element = (String) st.nextElement(); if ( "class".equalsIgnoreCase( element ) ) result[0] = true; @@ -479,9 +486,12 @@ return result; } - private JarVisitor.Filter[] getFilters(Properties properties, Map overridenProperties, final List<String> mappingFiles) { - boolean[] result = getDetectedArtifacts( properties, overridenProperties ); - int size = ( result[0] ? 2 : 0 ) + 1; //( result[1] ? 1 : 0 ); + private JarVisitor.Filter[] getFilters(PersistenceMetadata metadata, Map overridenProperties, boolean excludeIfNotOverriden) { + Properties properties = metadata.getProps(); + final List<String> mappingFiles = metadata.getMappingFiles(); + boolean[] result = getDetectedArtifacts( properties, overridenProperties, excludeIfNotOverriden ); + + int size = ( result[0] ? 2 : 0 ) + 1; //class involves classes and packages, xml files are always involved because of orm.xml JarVisitor.Filter[] filters = new JarVisitor.Filter[size]; if ( result[0] ) { filters[0] = new JarVisitor.PackageFilter( false, null ) { |
From: <hib...@li...> - 2006-08-11 04:21:37
|
Author: epbernard Date: 2006-08-11 00:21:33 -0400 (Fri, 11 Aug 2006) New Revision: 10242 Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/ExplodedJarVisitor.java trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/FileZippedJarVisitor.java trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/packaging/JarVisitorTest.java Log: Fix bug relating to character escaping in urls and proper usage of URI methods Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/ExplodedJarVisitor.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/ExplodedJarVisitor.java 2006-08-10 14:26:08 UTC (rev 10241) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/ExplodedJarVisitor.java 2006-08-11 04:21:33 UTC (rev 10242) @@ -28,7 +28,7 @@ protected void doProcessElements() throws IOException { File jarFile; try { - jarFile = new File( jarUrl.toURI().getPath() ); + jarFile = new File( jarUrl.toURI().getSchemeSpecificPart() ); } catch (URISyntaxException e) { log.warn( "Malformed url: " + jarUrl, e ); Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/FileZippedJarVisitor.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/FileZippedJarVisitor.java 2006-08-10 14:26:08 UTC (rev 10241) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/packaging/FileZippedJarVisitor.java 2006-08-11 04:21:33 UTC (rev 10242) @@ -20,18 +20,18 @@ public class FileZippedJarVisitor extends JarVisitor { private static Log log = LogFactory.getLog( FileZippedJarVisitor.class ); - protected FileZippedJarVisitor(String fileName, Filter[] filters) { + public FileZippedJarVisitor(String fileName, Filter[] filters) { super( fileName, filters ); } - protected FileZippedJarVisitor(URL url, Filter[] filters) { + public FileZippedJarVisitor(URL url, Filter[] filters) { super( url, filters ); } protected void doProcessElements() throws IOException { JarFile jarFile; try { - jarFile = new JarFile( jarUrl.toURI().getPath() ); + jarFile = new JarFile( jarUrl.toURI().getSchemeSpecificPart() ); } catch (IOException ze) { log.warn( "Unable to find file (ignored): " + jarUrl, ze ); Modified: trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/packaging/JarVisitorTest.java =================================================================== --- trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/packaging/JarVisitorTest.java 2006-08-10 14:26:08 UTC (rev 10241) +++ trunk/HibernateExt/ejb/src/test/org/hibernate/ejb/test/packaging/JarVisitorTest.java 2006-08-11 04:21:33 UTC (rev 10242) @@ -14,6 +14,7 @@ import org.hibernate.ejb.packaging.ExplodedJarVisitor; import org.hibernate.ejb.packaging.InputStreamZippedJarVisitor; import org.hibernate.ejb.packaging.JarVisitor; +import org.hibernate.ejb.packaging.FileZippedJarVisitor; import org.hibernate.ejb.test.pack.defaultpar.ApplicationServer; import org.hibernate.ejb.test.pack.explodedpar.Carpet; @@ -43,7 +44,7 @@ assertEquals( 0, visitor.getMatchingEntries()[2].size() ); } - public void testZippedJar() throws Exception { + public void testInputStreamZippedJar() throws Exception { String jarFileName = "file:./build/testresources/defaultpar.par"; //JarVisitor jarVisitor = new ZippedJarVisitor( jarFileName, true, true ); JarVisitor.Filter[] filters = getFilters(); @@ -65,6 +66,28 @@ // assertTrue( classes.contains( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName() ) ); } + public void testZippedJar() throws Exception { + String jarFileName = "file:./build/testresources/defaultpar.par"; + //JarVisitor jarVisitor = new ZippedJarVisitor( jarFileName, true, true ); + JarVisitor.Filter[] filters = getFilters(); + JarVisitor jarVisitor = new FileZippedJarVisitor( new URL( jarFileName ), filters ); + assertEquals( "defaultpar", jarVisitor.getUnqualifiedJarName() ); + Set entries = jarVisitor.getMatchingEntries()[1]; + assertEquals( 3, entries.size() ); + JarVisitor.Entry entry = new JarVisitor.Entry( ApplicationServer.class.getName(), null ); + assertTrue( entries.contains( entry ) ); + entry = new JarVisitor.Entry( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName(), null ); + assertTrue( entries.contains( entry ) ); + assertNull( ( (JarVisitor.Entry) entries.iterator().next() ).getInputStream() ); + assertEquals( 2, jarVisitor.getMatchingEntries()[2].size() ); + +// Set<String> classes = jarVisitor.getClassNames(); +// assertEquals( 3, classes.size() ); +// assertTrue( classes.contains( ApplicationServer.class.getName() ) ); +// assertTrue( classes.contains( Mouse.class.getName() ) ); +// assertTrue( classes.contains( org.hibernate.ejb.test.pack.defaultpar.Version.class.getName() ) ); + } + public void testExplodedJar() throws Exception { String jarFileName = "./build/testresources/explodedpar.par"; //JarVisitor jarVisitor = new ExplodedJarVisitor( jarFileName, true, true ); |
From: <hib...@li...> - 2006-08-10 14:26:15
|
Author: epbernard Date: 2006-08-10 10:26:08 -0400 (Thu, 10 Aug 2006) New Revision: 10241 Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/PropertyBinder.java Log: ANN-411 property marked as updateable = false on @Generated(INSERT) Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/PropertyBinder.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/PropertyBinder.java 2006-08-10 03:34:03 UTC (rev 10240) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/cfg/annotations/PropertyBinder.java 2006-08-10 14:26:08 UTC (rev 10241) @@ -149,8 +149,6 @@ throw new AnnotationException("Cannot have @Generated(ALWAYS) property and updatable columns: " + StringHelper.qualify( holder.getPath(), name ) ); } - prop.setInsertable( false ); - prop.setUpdateable( false ); prop.setGeneration( PropertyGeneration.parse( generated.toString().toLowerCase() ) ); } } |
From: <hib...@li...> - 2006-08-10 03:34:06
|
Author: epbernard Date: 2006-08-09 23:34:03 -0400 (Wed, 09 Aug 2006) New Revision: 10240 Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java trunk/HibernateExt/metadata/src/test/ValidatorMessages.properties trunk/HibernateExt/metadata/src/test/ValidatorMessages_da.properties trunk/HibernateExt/metadata/src/test/ValidatorMessages_fr.properties Log: ANN-265 when a key is not found default to DEFAULT_VALIDATOR_MESSAGES Modified: trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java =================================================================== --- trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java 2006-08-10 03:31:40 UTC (rev 10239) +++ trunk/HibernateExt/metadata/src/java/org/hibernate/validator/ClassValidator.java 2006-08-10 03:34:03 UTC (rev 10240) @@ -68,7 +68,8 @@ private final Class<T> beanClass; private transient ResourceBundle messageBundle; - private transient boolean defaultResourceBundle; + private transient ResourceBundle defaultMessageBundle; + private transient boolean isUserProvidedResourceBundle; private final transient Map<XClass, ClassValidator> childClassValidators; private transient List<Validator> beanValidators; @@ -106,6 +107,7 @@ this.messageBundle = resourceBundle == null ? getDefaultResourceBundle() : resourceBundle; + this.defaultMessageBundle = ResourceBundle.getBundle( DEFAULT_VALIDATOR_MESSAGE ); this.childClassValidators = childClassValidators; initValidator( beanClass, childClassValidators, this.messageBundle ); } @@ -139,10 +141,10 @@ "ResourceBundle ValidatorMessages not found in Validator classloader. Delegate to " + DEFAULT_VALIDATOR_MESSAGE ); //the user did not override the default ValidatorMessages - rb = ResourceBundle.getBundle( DEFAULT_VALIDATOR_MESSAGE ); + rb = null; } } - defaultResourceBundle = true; + isUserProvidedResourceBundle = true; return rb; } @@ -514,8 +516,26 @@ throw new IllegalArgumentException( "could not render message", e ); } } - else if ( messageBundle != null ) { - String string = messageBundle.getString( token ); + else { + String string = null; + try { + string = messageBundle != null ? messageBundle.getString( token ) : null; + } + catch( MissingResourceException e ) { + //give a second chance with the default resource bundle + } + if (string == null) { + try { + string = defaultMessageBundle.getString( token ); + } + catch( MissingResourceException e) { + throw new MissingResourceException( + "Can't find resource in validator bundles, key " + token, + defaultMessageBundle.getClass().getName(), + token + ); + } + } if ( string != null ) buf.append( replace( string, parameters ) ); } } @@ -568,9 +588,9 @@ ResourceBundle rb = messageBundle; if ( rb != null && ! ( rb instanceof Serializable ) ) { messageBundle = null; - if ( ! defaultResourceBundle ) { + if ( ! isUserProvidedResourceBundle ) { log.warn( - "Serializing a ClassValidator with a not serializable ResourceBundle: ResourceBundle ignored" + "Serializing a ClassValidator with a non serializable ResourceBundle: ResourceBundle ignored" ); } } @@ -583,6 +603,8 @@ ois.defaultReadObject(); ResourceBundle rb = (ResourceBundle) ois.readObject(); if ( rb == null ) rb = getDefaultResourceBundle(); - initValidator( reflectionManager.toXClass( beanClass ), new HashMap<XClass, ClassValidator>(), rb ); + this.messageBundle = rb; + this.defaultMessageBundle = ResourceBundle.getBundle( DEFAULT_VALIDATOR_MESSAGE ); + initValidator( reflectionManager.toXClass( beanClass ), new HashMap<XClass, ClassValidator>(), this.messageBundle ); } } Modified: trunk/HibernateExt/metadata/src/test/ValidatorMessages.properties =================================================================== --- trunk/HibernateExt/metadata/src/test/ValidatorMessages.properties 2006-08-10 03:31:40 UTC (rev 10239) +++ trunk/HibernateExt/metadata/src/test/ValidatorMessages.properties 2006-08-10 03:34:03 UTC (rev 10240) @@ -1,16 +1,4 @@ -#generic of Hibernate Validator -validator.assertFalse=assertion failed -validator.assertTrue=assertion failed -validator.future=must be a future date -validator.length=length must be between {min} and {max} -validator.max=must less than or equal to {value} -validator.min=must greater than or equal to {value} -validator.notNull=may not be null -validator.past=must be a past date -validator.pattern=must match "{regex}" -validator.range=must be between {min} and {max} -validator.size=size must be between {min} and {max} -validator.email=not a well-formed email address +#overriding of default keys #specific to my project long=is too damn long Modified: trunk/HibernateExt/metadata/src/test/ValidatorMessages_da.properties =================================================================== --- trunk/HibernateExt/metadata/src/test/ValidatorMessages_da.properties 2006-08-10 03:31:40 UTC (rev 10239) +++ trunk/HibernateExt/metadata/src/test/ValidatorMessages_da.properties 2006-08-10 03:34:03 UTC (rev 10240) @@ -1,12 +1,7 @@ -validator.assertFalse=assertion fejlet -validator.assertTrue=assertion fejlet -validator.future=skal v en fremtidig dato -validator.length=lden skal v mellem {min} og {max} -validator.max=skal v mindre end eller lig med {value} -validator.min=skal v stend eller lig med {value} -validator.notNull=mkke v null -validator.past=skal v en passeret dato -validator.pattern=skal matche "{regex}" -validator.range=skal v mellem {min} og {max} -validator.size=antallet skal v mellem {min} og {max} -validator.email=not a well-formed email address \ No newline at end of file +#overriding of default keys + +#specific to my project +long=is too damn long +floor.name=Floor +out.of.range=lower that {min} and greater than {max} +floor.out.of.range={floor.name} cannot be {out.of.range} \ No newline at end of file Modified: trunk/HibernateExt/metadata/src/test/ValidatorMessages_fr.properties =================================================================== --- trunk/HibernateExt/metadata/src/test/ValidatorMessages_fr.properties 2006-08-10 03:31:40 UTC (rev 10239) +++ trunk/HibernateExt/metadata/src/test/ValidatorMessages_fr.properties 2006-08-10 03:34:03 UTC (rev 10240) @@ -1,15 +1,4 @@ -validator.assertFalse=l'assertion a ouvalidator.assertTrue=l'assertion a ouvalidator.future=doit e dans le futur -validator.length=la longueur doit e entre {min} et {max} -validator.max=doit e infeur ou l value} -validator.min=doit e supeur ou l value} -validator.notNull=ne peut pas e nul -validator.past=doit e dans le passvalidator.pattern=doit suivre "{regex}" -validator.range=doit e entre {min} et {max} -validator.size=le nombre d'ments doit e entre {min} et {max} -validator.email=adresse email non valide +#overriding of default keys #specific to my project long=est grave trop long |
From: <hib...@li...> - 2006-08-10 03:31:44
|
Author: epbernard Date: 2006-08-09 23:31:40 -0400 (Wed, 09 Aug 2006) New Revision: 10239 Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java Log: sync to hibernate core head Modified: trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java =================================================================== --- trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java 2006-08-10 00:27:25 UTC (rev 10238) +++ trunk/HibernateExt/ejb/src/java/org/hibernate/ejb/instrument/InterceptFieldClassFileTransformer.java 2006-08-10 03:31:40 UTC (rev 10239) @@ -4,10 +4,13 @@ import java.lang.instrument.IllegalClassFormatException; import java.security.ProtectionDomain; import java.util.List; +import java.util.ArrayList; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.hibernate.cfg.Environment; +import org.hibernate.bytecode.util.ClassFilter; +import org.hibernate.bytecode.util.FieldFilter; /** * Enhance the classes allowing them to implements InterceptFieldEnabled @@ -20,8 +23,29 @@ private org.hibernate.bytecode.ClassTransformer classTransformer; public InterceptFieldClassFileTransformer(List<String> entities) { - classTransformer = Environment.getBytecodeProvider().getEntityClassTransformer( - null, entities.toArray( new String[ entities.size() ] ) +// classTransformer = Environment.getBytecodeProvider().getEntityClassTransformer( +// null, entities.toArray( new String[ entities.size() ] ) +// ); + final List<String> copyEntities = new ArrayList<String>( entities.size() ); + copyEntities.addAll( entities ); + classTransformer = Environment.getBytecodeProvider().getTransformer( + new ClassFilter() { + public boolean shouldInstrumentClass(String className) { + return copyEntities.contains( className ); + } + }, + new FieldFilter() { + + public boolean shouldInstrumentField(String className, String fieldName) { + return true; + } + + public boolean shouldTransformFieldAccess( + String transformingClassName, String fieldOwnerClassName, String fieldName + ) { + return true; + } + } ); } |
From: <hib...@li...> - 2006-08-10 00:27:32
|
Author: honma Date: 2006-08-09 20:27:25 -0400 (Wed, 09 Aug 2006) New Revision: 10238 Modified: trunk/Hibernate3/doc/reference/ja/master.xml trunk/Hibernate3/doc/reference/ja/modules/architecture.xml trunk/Hibernate3/doc/reference/ja/modules/basic_mapping.xml trunk/Hibernate3/doc/reference/ja/modules/query_sql.xml trunk/Hibernate3/doc/reference/ja/modules/tutorial.xml trunk/Hibernate3/doc/reference/ja/readme_ja.txt Log: I've finished translating reference document v3.2.0 at last : ) Modified: trunk/Hibernate3/doc/reference/ja/master.xml =================================================================== --- trunk/Hibernate3/doc/reference/ja/master.xml 2006-08-09 21:12:56 UTC (rev 10237) +++ trunk/Hibernate3/doc/reference/ja/master.xml 2006-08-10 00:27:25 UTC (rev 10238) @@ -33,7 +33,7 @@ <bookinfo> <title>HIBERNATE - Relational Persistence for Idiomatic Java</title> <subtitle>Hibernate Reference Documentation</subtitle> - <releaseinfo>3.1.2</releaseinfo> + <releaseinfo>3.2 cr3</releaseinfo> </bookinfo> <toc/> @@ -42,19 +42,6 @@ <title>O</title> <para> - WARNING! This is a translated version of the English Hibernate reference - documentation. The translated version might not be up to date! However, the - differences should only be very minor. Consult the English reference - documentation if you are missing information or encounter a translation - error. If you like to contribute to a particular translation, contact us - on the Hibernate developer mailing list. - </para> - - <para> - Translator(s): Chikara Honma, Yusuke Hiroto; - </para> - - <para> ƊɂāAIuWFNgwgEFAƃ[Vif[^x[XɊւ ώGŖcԂvƂ܂B HibernateavãIuWFNg/[Vi}bsOc[łB @@ -65,7 +52,7 @@ <para> HibernateavaNX[^x[Xe[uցiavaf[^^Lf[^^ցj - ̃}bsO邾ł͂ȂAf[^̃NGƕ̎dg݂܂B + ̃}bsO邾ł͂ȂAf[^̃NGƕ̎dg݂܂B ̂QLDBCƂł̃f[^ɔJԂɍ팸ł܂B </para> @@ -89,8 +76,6 @@ <para> <xref linkend="tutorial"/> B iKIɉĂ܂B - <xref linkend="tutorial"/> B - iKIɉĂ܂B `[gÃ\[XR[h̓fBXgr[V <literal>doc/reference/tutorial</literal> fBNgɊ܂܂܂B </para> @@ -127,11 +112,11 @@ FAQibernateEFuTCgɂB </para> </listitem> - <listitem> + <listitem> <para> T[hp[eB̃fA`[gAibernateEFuTCgɃNB </para> - </listitem> + </listitem> <listitem> <para> HibernateEFuTCg̃R~jeBGÁAfUCp^[₳܂܂ȓ\[V @@ -142,9 +127,9 @@ <para> ₪HibernateEFuTCg̃[UtH[pĂB - ܂oO|[gƃtB[`NGXĝIRAǐՃVXeӂĂ܂B + ܂oO|[gƃtB[`NGXĝIRAۑՃVXeӂĂ܂B Hibernate̊JɋAJ҃[OXgɎQĂB - ̃hLgȂB̌|ꍇ́A + ̃hLgȂ̍̌tɖ|ꍇ́A J҃[OXgŎɃR^NgĂB </para> @@ -154,7 +139,7 @@ Hibernaterofessional Open SourcevWFNgA Boss Enterprise Middleware SystemiJEMSjv_NgXC[g̃NeBJR|[lgłB </para> - + <sect1 id="preface-s1" revision="-1"> <title>/title> @@ -179,7 +164,7 @@ <title>Ŗ|ɂ/title> <para id="preface-s1-1-p4" revision="-1"> - Ńo[W3.1.2̖|GNT + Ńo[W3.2 cr3̖|GNT i<ulink url="http://www.exa-corp.co.jp">z[y[W͂ulink>j ̈ȉ̃o[ōs܂B {ԗ́i6,18,19,21,22,23͒SjA Modified: trunk/Hibernate3/doc/reference/ja/modules/architecture.xml =================================================================== --- trunk/Hibernate3/doc/reference/ja/modules/architecture.xml 2006-08-09 21:12:56 UTC (rev 10237) +++ trunk/Hibernate3/doc/reference/ja/modules/architecture.xml 2006-08-10 00:27:25 UTC (rev 10238) @@ -7,9 +7,6 @@ <title>T/title> <para> - A (very) high-level view of the Hibernate architecture: - </para> - <para> HibernateA[LeN`́iɁjxr[F </para> @@ -23,23 +20,12 @@ </mediaobject> <para> - This diagram shows Hibernate using the database and configuration data to - provide persistence services (and persistent objects) to the application. - </para> - <para> ̐}ibernateAAvP[VɑĉiT[rX iƉiIuWFNgj邽߂ɁAf[^x[XƐݒ[^Ƃ Ă܂B </para> <para> - We would like to show a more detailed view of the runtime architecture. - Unfortunately, Hibernate is flexible and supports several approaches. We will - show the two extremes. The "lite" architecture has the application - provide its own JDBC connections and manage its own transactions. This approach - uses a minimal subset of Hibernate's APIs: - </para> - <para> ŎsA[LeN`̂ڍׂȃr[܂傤B ɂAHibernate͏_낢Av[`|[gĂ܂B ł́A2̋ɒ[ȗ܂B @@ -58,10 +44,6 @@ </mediaobject> <para> - The "full cream" architecture abstracts the application away from the - underlying JDBC/JTA APIs and lets Hibernate take care of the details. - </para> - <para> udvA[LeN`́AAvP[V̉ɈʒuBCAPI ĒۉȀڍׂ̖ʓ|ernateɌ܂B </para> @@ -83,13 +65,6 @@ <term>SessionFactory (<literal>org.hibernate.SessionFactory</literal>)</term> <listitem> <para> - A threadsafe (immutable) cache of compiled mappings for a single database. - A factory for <literal>Session</literal> and a client of - <literal>ConnectionProvider</literal>. Might hold an optional (second-level) - cache of data that is reusable between transactions, at a - process- or cluster-level. - </para> - <para> 1̃f[^x[XɑpCꂽ}bsO XbhZ[tȁiXVs\́jLbVB <literal>Session</literal> ̃t@Ngł @@ -103,13 +78,6 @@ <term>Session (<literal>org.hibernate.Session</literal>)</term> <listitem> <para> - A single-threaded, short-lived object representing a conversation between - the application and the persistent store. Wraps a JDBC connection. Factory - for <literal>Transaction</literal>. Holds a mandatory (first-level) cache - of persistent objects, used when navigating the object graph or looking up - objects by identifier. - </para> - <para> AvP[VƉiXgAƂ̑ΘbA VOXbhŒZ̃IuWFNgB JDBCRlNVbv܂B @@ -124,14 +92,6 @@ <term>Persistent objects Collections</term> <listitem> <para> - Short-lived, single threaded objects containing persistent state and business - function. These might be ordinary JavaBeans/POJOs, the only special thing about - them is that they are currently associated with (exactly one) - <literal>Session</literal>. As soon as the <literal>Session</literal> is closed, - they will be detached and free to use in any application layer (e.g. directly - as data transfer objects to and from presentation). - </para> - <para> iƃrWlX\bhAZŃVOXbh̃IuWFNgB ʏJavaBeans/POJÔƂAIȂƂ́A ̎_ł́i1́j <literal>Session</literal> Ɗ֘AĂ邱ƂłB @@ -146,12 +106,6 @@ <term>Transient detached objects Collections</term> <listitem> <para> - Instances of persistent classes that are not currently associated with a - <literal>Session</literal>. They may have been instantiated by - the application and not (yet) persisted or they may have been instantiated by a - closed <literal>Session</literal>. - </para> - <para> _ł<literal>Session</literal> Ɗ֘AĂȂA iNX̃CX^XB łɃAvP[VŃCX^XāA܂iȂA @@ -163,14 +117,6 @@ <term>Transaction (<literal>org.hibernate.Transaction</literal>)</term> <listitem> <para> - (Optional) A single-threaded, short-lived object used by the application to - specify atomic units of work. Abstracts application from underlying JDBC, - JTA or CORBA transaction. A <literal>Session</literal> might span several - <literal>Transaction</literal>s in some cases. However, transaction demarcation, - either using the underlying API or <literal>Transaction</literal>, is never - optional! - </para> - <para> (IvV)qPUnit of Work)肷邽߂ɁAAvP[Vgp VOXbhŒZȃIuWFNgB ɈʒuBCAJTAACORBAgUNVvP[V𒊏ۉ܂B @@ -185,11 +131,6 @@ <term>ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)</term> <listitem> <para> - (Optional) A factory for (and pool of) JDBC connections. Abstracts application from - underlying <literal>Datasource</literal> or <literal>DriverManager</literal>. - Not exposed to application, but can be extended/implemented by the developer. - </para> - <para> (IvV)JDBCRlNViƂ̃v[j̃t@NgB ̑wɈʒuliteral>Datasource</literal> <literal>DriverManager</literal> vP[V𒊏ۉ܂B @@ -201,10 +142,6 @@ <term>TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)</term> <listitem> <para> - (Optional) A factory for <literal>Transaction</literal> instances. Not exposed to the - application, but can be extended/implemented by the developer. - </para> - <para> (IvV) <literal>Transaction</literal> CX^X̃t@NgB AvP[Vɂ͌AJ҂p܂͎邱Ƃ͉\łB </para> @@ -214,10 +151,6 @@ <term><emphasis>Extension Interfaces</emphasis></term> <listitem> <para> - Hibernate offers many optional extension interfaces you can implement to customize - the behavior of your persistence layer. See the API documentation for details. - </para> - <para> HibernatéAiw̐U镑X^}CY邽߂ɁA ̃IvVgC^tF[XӂĂ܂B ڍׂPIhLgƂĂB @@ -228,11 +161,6 @@ </para> <para> - Given a "lite" architecture, the application bypasses the - <literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or - <literal>ConnectionProvider</literal> APIs to talk to JTA or JDBC directly. - </para> - <para> uyvA[LeN`ł́AAvP[V͒TABCƑΘb邽߂ɁA <literal>Transaction</literal> literal>TransactionFactory</literal> <literal>ConnectionProvider</literal> CpX܂B @@ -242,11 +170,6 @@ <sect1 id="architecture-states" revision="1"> <title>CX^X̏/title> <para> - An instance of a persistent classes may be in one of three different states, - which are defined with respect to a <emphasis>persistence context</emphasis>. - The Hibernate <literal>Session</literal> object is the persistence context: - </para> - <para> iNX̃CX^X́ÂR̈قȂԂ̂ǂꂩɂȂB A <emphasis>iReLXg</emphasis> ɂČ܂B Hibernate<literal>Session</literal> IuWFNgAiReLXgɂȂB @@ -257,11 +180,6 @@ <term>transient</term> <listitem> <para> - The instance is not, and has never been associated with - any persistence context. It has no persistent identity - (primary key value). - </para> - <para> ̏̃CX^X́A݂ĉߋɂĂ iReLXgɊ֘AÂĂ܂܂AiIDi[̒lj Ă܂@@ -272,15 +190,6 @@ <term>persistent</term> <listitem> <para> - The instance is currently associated with a persistence - context. It has a persistent identity (primary key value) - and, perhaps, a corresponding row in the database. For a - particular persistence context, Hibernate - <emphasis>guarantees</emphasis> that persistent identity - is equivalent to Java identity (in-memory location of the - object). - </para> - <para> ̏̃CX^X́A̎_ʼniReLXgɊ֘AÂĂ܂B ܂AiIDi[̒ljA Ă̓f[^x[XɑΉĂ傤B @@ -294,15 +203,6 @@ <term>detached</term> <listitem> <para> - The instance was once associated with a persistence - context, but that context was closed, or the instance - was serialized to another process. It has a persistent - identity and, perhaps, a corrsponding row in the database. - For detached instances, Hibernate makes no guarantees - about the relationship between persistent identity and - Java identity. - </para> - <para> ̏̃CX^X́AĉiReLXgɊ֘AÂA ̃ReLXgN[YꂽA邢́A ̃vZXɂ̃CX^XVACYꂽłB @@ -319,11 +219,6 @@ <title>JMXƂ̓</title> <para> - JMX is the J2EE standard for management of Java components. Hibernate may be managed via - a JMX standard service. We provide an MBean implementation in the distribution, - <literal>org.hibernate.jmx.HibernateService</literal>. - </para> - <para> JMXavaR|[lgǗ2EEWłB JMXWT[rXāAHibernate͊ǗB fBXgr[V̒<literal>org.hibernate.jmx.HibernateService</literal> Ƃ @@ -331,11 +226,6 @@ </para> <para> - For an example how to deploy Hibernate as a JMX service on the JBoss Application Server, - please see the JBoss User Guide. On JBoss AS, you also get these benefits if you deploy - using JMX: - </para> - <para> JBoss AvP[VT[o[HibernateT[rXƂăfvC@̗ẮA JBoss [UKChƂĂB JBoss AvP[VT[o[ɂāA JMXăfvCÃbg܂B @@ -344,16 +234,6 @@ <itemizedlist> <listitem> <para> - <emphasis>Session Management:</emphasis> The Hibernate <literal>Session</literal>'s lifecycle - can be automatically bound to the scope of a JTA transaction. This means you no - longer have to manually open and close the <literal>Session</literal>, this - becomes the job of a JBoss EJB interceptor. You also don't have to worry about - transaction demarcation in your code anymore (unless you'd like to write a portable - persistence layer of course, use the optional Hibernate <literal>Transaction</literal> - API for this). You call the <literal>HibernateContext</literal> to access a - <literal>Session</literal>. - </para> - <para> <emphasis>ZbVǗ:</emphasis> Hibernate<literal>Session</literal> ̃CtTCŃA ITAgUNṼXR[vɌт܂BA <literal>Session</literal> [vN[Y肷vȂƂ܂B @@ -367,14 +247,6 @@ </listitem> <listitem> <para> - <emphasis>HAR deployment:</emphasis> Usually you deploy the Hibernate JMX service using a JBoss - service deployment descriptor (in an EAR and/or SAR file), it supports all the usual - configuration options of a Hibernate <literal>SessionFactory</literal>. However, you still - have to name all your mapping files in the deployment descriptor. If you decide to use - the optional HAR deployment, JBoss will automatically detect all mapping files in your - HAR file. - </para> - <para> <emphasis>HAR fvC:</emphasis> ʏ(EAR ܂SAR t@CɂJBoss T[rX fvCgfBXNv^āAHibernate JMX T[rXvC܂B AHibernate<literal>SessionFactory</literal> ̑SĂ̈IȐݒvV -387,18 +259,11 @@ </itemizedlist> <para> - Consult the JBoss AS user guide for more information about these options. - </para> - <para> ̃IvVɂĂ̏ڍׂȏ́AJBossAvP[VT[o[UKCh QlɂĂB </para> <para> - Another feature available as a JMX service are runtime Hibernate statistics. See - <xref linkend="configuration-optional-statistics"/>. - </para> - <para> JMXT[rXƂėp\ȑ̋@\ɁAHibernatesvB <xref linkend="configuration-optional-statistics"/> ĂB </para> @@ -407,10 +272,6 @@ <sect1 id="architecture-jca" revision="1"> <title>JCA T|[g</title> <para> - Hibernate may also be configured as a JCA connector. Please see the website for more - details. Please note that Hibernate JCA support is still considered experimental. - </para> - <para> Hibernate JCA RlN^ƂĂ܂BڍׂɂẮAWebTCgĂB Hibernate JCA T|[ǵÂƂiKƂčlĂ邱ƂɒӂĂB </para> @@ -419,15 +280,6 @@ <sect1 id="architecture-current-session" revision="2"> <title>ReLXgZbV</title> <para> - Most applications using Hibernate need some form of "contextual" sessions, where a given - session is in effect throughout the scope of a given context. However, across applications - the definition of what constitutes a context is typically different; and different contexts - define different scopes to the notion of current. Applications using Hibernate prior - to version 3.0 tended to utilize either home-grown <literal>ThreadLocal</literal>-based - contextual sessions, helper classes such as <literal>HibernateUtil</literal>, or utilized - third-party frameworks (such as Spring or Pico) which provided proxy/interception-based contextual sessions. - </para> - <para> Hibernate AvP[V́AقƂAȂ̌`ReLXg"ZbVKvɂȂB uReLXgZbVv́AReLXg̃XR[v̂ȂŗLbV̂ƂłB AʏvP[VƂɃReLXĝ͈̒قȂB @@ -439,16 +291,6 @@ </para> <para> - Starting with version 3.0.1, Hibernate added the <literal>SessionFactory.getCurrentSession()</literal> - method. Initially, this assumed usage of <literal>JTA</literal> transactions, where the - <literal>JTA</literal> transaction defined both the scope and context of a current session. - The Hibernate team maintains that, given the maturity of the numerous stand-alone - <literal>JTA TransactionManager</literal> implementations out there, most (if not all) - applications should be using <literal>JTA</literal> transaction management whether or not - they are deployed into a <literal>J2EE</literal> container. Based on that, the - <literal>JTA</literal>-based contextual sessions is all you should ever need to use. - </para> - <para> o[W 3.0.1 Hibernate ɂ<literal>SessionFactory.getCurrentSession()</literal> ܂B A <literal>JTA</literal> gUNV̎gpĂ܂B <literal>JTA</literal> gUNV́Ã݂ZbṼXR[vƃReLXg̗`܂B @@ -462,13 +304,6 @@ </para> <para> - However, as of version 3.1, the processing behind - <literal>SessionFactory.getCurrentSession()</literal> is now pluggable. To that - end, a new extension interface (<literal>org.hibernate.context.CurrentSessionContext</literal>) - and a new configuration parameter (<literal>hibernate.current_session_context_class</literal>) - have been added to allow pluggability of the scope and context of defining current sessions. - </para> - <para> Ao[W 3.1 A <literal>SessionFactory.getCurrentSession()</literal> ̌A vKuɂȂB āÃ݂ZbV`R[vƃReLXg̃vKreB\ɂ邽߂ɁA @@ -477,13 +312,6 @@ </para> <para> - See the Javadocs for the <literal>org.hibernate.context.CurrentSessionContext</literal> - interface for a detailed discussion of its contract. It defines a single method, - <literal>currentSession()</literal>, by which the implementation is responsible for - tracking the current contextual session. Out-of-the-box, Hibernate comes with three - implementations of this interface. - </para> - <para> <literal>org.hibernate.context.CurrentSessionContext</literal> C^tF[X̋KĂ ڍׂȓJavadoc ƂĂB ́A <literal>currentSession()</literal> Ƃ1̃\bh @@ -494,12 +322,6 @@ <itemizedlist> <listitem> <para> - <literal>org.hibernate.context.JTASessionContext</literal> - current sessions - are tracked and scoped by a <literal>JTA</literal> transaction. The processing - here is exactly the same as in the older JTA-only approach. See the Javadocs - for details. - </para> - <para> <literal>org.hibernate.context.JTASessionContext</literal> - <literal>JTA</literal> gUNVɂāÃ݂ZbVǐՂ XR[v߂܂B̏́AÂJTÃAv[`Ƃ܂łB @@ -508,10 +330,6 @@ </listitem> <listitem> <para> - <literal>org.hibernate.context.ThreadLocalSessionContext</literal> - current - sessions are tracked by thread of execution. Again, see the Javadocs for details. - </para> - <para> <literal>org.hibernate.context.ThreadLocalSessionContext</literal> - Xbh̎sɂāÃ݂ZbVǐՂB ڍׂavadocƂĂB @@ -519,12 +337,6 @@ </listitem> <listitem> <para> - <literal>org.hibernate.context.ManagedSessionContext</literal> - current - sessions are tracked by thread of execution. However, you are responsible to - bind and unbind a <literal>Session</literal> instance with static methods - on this class, it does never open, flush, or close a <literal>Session</literal>. - </para> - <para> <literal>org.hibernate.context.ManagedSessionContext</literal> - Xbh̎sɂāÃ݂ZbVǐՂB ÃNXtatic\bh<literal>Session</literal> CX^X -535,17 +347,6 @@ </itemizedlist> <para> - The first two implementations provide a "one session - one database transaction" programming - model, also known and used as <emphasis>session-per-request</emphasis>. The beginning - and end of a Hibernate session is defined by the duration of a database transaction. - If you use programatic transaction demarcation in plain JSE without JTA, you are adviced to - use the Hibernate <literal>Transaction</literal> API to hide the underlying transaction system - from your code. If you use JTA, use the JTA interfaces to demarcate transactions. If you - execute in an EJB container that supports CMT, transaction boundaries are defined declaratively - and you don't need any transaction or session demarcation operations in your code. - Refer to <xref linkend="transactions"/> for more information and code examples. - </para> - <para> n߂̎́A"1ZbV - 1f[^x[XgUNV" vO~Of܂B <emphasis>NGXgƂ̃ZbVisession-per-requestj</emphasis> ƂĂĂgĂ܂B Hibernate ZbV̊JnƏÍAf[^x[XgUNV̊܂B @@ -559,16 +360,6 @@ </para> <para> - The <literal>hibernate.current_session_context_class</literal> configuration parameter - defines which <literal>org.hibernate.context.CurrentSessionContext</literal> implementation - should be used. Note that for backwards compatibility, if this config param is not set - but a <literal>org.hibernate.transaction.TransactionManagerLookup</literal> is configured, - Hibernate will use the <literal>org.hibernate.context.JTASessionContext</literal>. - Typically, the value of this parameter would just name the implementation class to - use; for the three out-of-the-box implementations, however, there are two corresponding - short names, "jta", "thread", and "managed". - </para> - <para> <literal>hibernate.current_session_context_class</literal> ݒ[^́A <literal>org.hibernate.context.CurrentSessionContext</literal> ̂ǂ̎肵܂B ʌ݊̂߁Ãp[^ݒ肳ꂸ Modified: trunk/Hibernate3/doc/reference/ja/modules/basic_mapping.xml =================================================================== --- trunk/Hibernate3/doc/reference/ja/modules/basic_mapping.xml 2006-08-09 21:12:56 UTC (rev 10237) +++ trunk/Hibernate3/doc/reference/ja/modules/basic_mapping.xml 2006-08-10 00:27:25 UTC (rev 10238) @@ -119,26 +119,17 @@ </title> <para> - As mentioned previously, Hibernate will first attempt to resolve DTDs in its classpath. The manner in which it does this is by registering a custom <literal>org.xml.sax.EntityResolver</literal> implementation with the SAXReader it uses to read in the xml files. This custom <literal>EntityResolver</literal> recognizes two different systemId namespaces. - - - - + - - Oq悤ɁAHibernate͂܂̃NXpXDTD悤Ƃ܂B - DTD̉́A - JX^ <literal>org.xml.sax.EntityResolver</literal> ̎^邱Ƃɂčs܂B - ̂Ƃ <literal>EntityResolver</literal> ̎́A - XMLt@Cݍނ߂AX[_ibernateɓo^B - ̃JX^<literal>EntityResolver</literal> ̈قȂXeIDOŔFB - - + Oq悤ɁAHibernate͂܂NXpXDTD悤Ƃ܂B + <literal>org.xml.sax.EntityResolver</literal> ̃JX^ XMLt@Cݍނ߂AXReaderɓo^邱ƂɂāADTD܂B + ̃JX^<literal>EntityResolver</literal> ̈قȂXeIDO܂B </para> @@ -146,23 +137,19 @@ <listitem> <para> - a <literal>hibernate namespace</literal> is recognized whenever the resolver encounteres a systemId starting with <literal>http://hibernate.sourceforge.net/</literal>; the resolver attempts to resolve these entities via the classlaoder which loaded the Hibernate classes. - - <literal>HibernateO/literal> ́A]o - <literal>http://hibernate.sourceforge.net/</literal> Ŏn܂XeIDɓBƂ- KFB - ă]óAHibernatẽNXɂă[hꂽNX[_āA + <literal>http://hibernate.sourceforge.net/</literal> Ŏn܂XeIDɓBƂɁA + FB + ă]óAHibernatẽNX[hNX[_āA ̃GeBeB悤Ƃ܂B - @@ -171,24 +158,20 @@ <listitem> <para> - a <literal>user namespace</literal> is recognized whenever the resolver encounteres a systemId using a <literal>classpath://</literal> URL protocol; the resolver will attempt to resolve these entities via (1) the current thread context classloader and (2) the classloader which loaded the Hibernate classes. - - - <literal>[UO/literal>́A]o - URLvgR<literal>classpath://</literal> VXeIDɓBƂ- KFBă]óA(1)݂̃XbhReLXgāA܂- (2)HibernatẽNXɂă[hꂽNX[_āA - ̃GeBeB悤Ƃ܂B - + <literal>[UO/literal> ́A]o + URLvgR<literal>classpath://</literal> VXeIDɓBƂɁA + FBă]óA(1)JgXbh̃ReLXgNX[_[A + ܂2)HibernatẽNX[hNX[_āA + ̃GeBeB悤Ƃ܂B </para> @@ -221,17 +204,13 @@ </hibernate-mapping>]]></programlisting> <para> - Where <literal>types.xml</literal> is a resource in the <literal>your.domain</literal> package and contains a custom <xref linkend="mapping-types-custom">typedef</xref>. - - - literal>types.xml</literal> <literal>your.domain</literal>pbP[W\[Xł - JX^ <xref linkend="mapping-types-custom">typedef</xref>ނ܂B - + <literal>types.xml</literal> <literal>your.domain</literal> pbP[W\[Xł + JX^ <xref linkend="mapping-types-custom">typedef</xref> ނ܂B </para> </sect3> Modified: trunk/Hibernate3/doc/reference/ja/modules/query_sql.xml =================================================================== --- trunk/Hibernate3/doc/reference/ja/modules/query_sql.xml 2006-08-09 21:12:56 UTC (rev 10237) +++ trunk/Hibernate3/doc/reference/ja/modules/query_sql.xml 2006-08-10 00:27:25 UTC (rev 10238) @@ -17,38 +17,22 @@ C^[tFCXĐ䂵܂B <literal>SQLQuery</literal> C^[tFCX <literal>Session.createSQLQuery()</literal> яoĎ擾܂B - The following describes how to use this API for querying. PIĖ₢킹@Ő܂B</para> -܂ - <sect2> - <title>Scalar queries@@XJ[̃NG</title> + <title>XJ[̃NG</title> - <para>The most basic SQL query is to get a list of scalars - (values).</para> - <para>ł{IQLNG̓XJ[ilj̃Xg邱ƂłB</para> <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS").list(); sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").list(); ]]></programlisting> - <para>These will both return a List of Object arrays (Object[]) with - scalar values for each column in the CATS table. Hibernate will use - ResultSetMetadata to deduce the actual order and types of the returned - scalar values.</para> - <para>͂ǂACATSe[ůeJ̃XJ[l Objectzbject[]j̃Xg܂B - ԂXJ[l̎ۂ̏Ԃƌ^𐄘_邽߂ɁA + ԂXJ[l̎ۂ̏Ԃƌ^𐄒肷邽߂ɁA HibernateesultSetMetadatap܂B</para> - <para>To avoid the overhead of using - <literal>ResultSetMetadata</literal> or simply to be more explicit in - what is returned one can use <literal>addScalar()</literal>.</para> - <para><literal>ResultSetMetadata</literal> p[o[wbh邽߁A ͒PɉԂmɂ邽߁A<literal>addScalar()</literal> ܂B</para> @@ -59,30 +43,18 @@ .addScalar("BIRTHDATE", Hibernate.DATE) ]]></programlisting> - <para>This query specified:</para> - <para>̃NGŎw肳̂LɎ܂B</para> <itemizedlist> <listitem> - <para>the SQL query string</para> <para>SQLNGara> </listitem> <listitem> - <para>the columns and types to return</para> <para>ԂJƌ^</para> </listitem> </itemizedlist> - <para>This will still return Object arrays, but now it will not use - <literal>ResultSetMetdata</literal> but will instead explicitly get the - ID, NAME and BIRTHDATE column as respectively a Long, String and a Short - from the underlying resultset. This also means that only these three - columns will be returned, even though the query is using - <literal>*</literal> and could return more than the three listed - columns.</para> - <para>܂ObjectzԂ܂A <literal>ResultSetMetdata</literal> p܂ Ȃɂ郊UgZbg@ -92,9 +64,6 @@ ƂANG <literal>*</literal> pA R̃JĂB</para> - <para>It is possible to leave out the type information for all or some - of the scalars.</para> - <para>XJ[̌^Ƃ܂B</para> <programlisting><![CDATA[sess.createSQLQuery("SELECT * FROM CATS") @@ -103,20 +72,12 @@ .addScalar("BIRTHDATE") ]]></programlisting> - <para>This is essentially the same query as before, but now - <literal>ResultSetMetaData</literal> is used to decide the type of NAME - and BIRTHDATE where as the type of ID is explicitly specified.</para> - - <para>{IɑOƓNGłA + <para> + {IɑOƓNGłAA NAME BIRTHDATE ̌^߂邽߂<literal>ResultSetMetaData</literal> - p܂BID ̌^͖IɎw肳܂Biwhere as ̖/para> + p܂BAID ̌^͖IɎw肳܂B + </para> - <para>How the java.sql.Types returned from ResultSetMetaData is mapped - to Hibernate types is controlled by the Dialect. If a specific type is - not mapped or does not result in the expected type it is possible to - customize it via calls to <literal>registerHibernateType</literal> in - the Dialect.</para> - <para> ResultSetMetaData java.sql.Types bernate ̌^ }bsO邱Ƃ́ADialect 䂵܂B @@ -127,13 +88,8 @@ </sect2> <sect2> - <title>Entity queries@@GeBeB NG</title> + <title>GeBeB̃NG</title> - <para>The above queries were all about returning scalar values, - basically returning the "raw" values from the resultset. The following - shows how to get entity objects from a native sql query via - <literal>addEntity()</literal>.</para> - <para>܂ł̃NǴAׂăXJ[lłB IɁAUgZbgHv̒l܂B ȍ~ł́A<literal>addEntity()</literal> ɂAlCeBuSQLNG@ -143,40 +99,25 @@ sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE FROM CATS").addEntity(Cat.class); ]]></programlisting> - <para>This query specified:</para> - <para>̃NGŎw肳̂LɎ܂B</para> <itemizedlist> <listitem> - <para>the SQL query string</para> <para>SQLNGara> </listitem> <listitem> - <para>the entity returned by the query</para> - <para>NGԂGeBeBQLe[u̕ʖ</para> + <para>NGԂGeBeBQLe[u̕ʖ + </para> </listitem> </itemizedlist> - <para>Assuming that Cat is mapped as a class with the columns ID, NAME - and BIRTHDATE the above queries will both return a List where each - element is a Cat entity.</para> + <para>CatID, NAME, BIRTHDATẼJăNXɃ}bsOꍇA + ̃NG͂ǂAvfCatGeBeBł郊Xg܂B</para> - <para>Cat XƂDANAMEABIRTHDATE JɃ}bsO肵A - ̃NG͗ Cat GeBeBfƂĎXg܂Biςȓj</para> - - <para>If the entity is mapped with a <literal>many-to-one</literal> to - another entity it is required to also return this when performing the - native query, otherwise a database specific "column not found" error - will occur. The additional columns will automatically be returned when - using the * notation, but we prefer to be explicit as in the following - example for a <literal>many-to-one</literal> to a - <literal>Dog</literal>:</para> - <para>GeBeB̃GeBeB<literal>Έliteral> Ń}bsOẮA lCeBuNGsɁA̕ʂ̃GeBeBƂ܂B - Af[^x[XŗĹuJvG[܂B + Af[^x[XŗĹucolumn not found(JG[܂B * \Lpۂ́Alj̃JIɕԂA ̗悤ɁA<literal>Dog</literal> <literal>Έliteral> ł邱Ƃ 邱Ƃ͍D݂܂B</para> @@ -184,40 +125,25 @@ <programlisting><![CDATA[sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS").addEntity(Cat.class); ]]></programlisting> - <para>This will allow cat.getDog() to function properly.</para> - <para> cat.getDog() @\܂B</para> </sect2> <sect2> - <title>Handling associations and collections - ֘AƃRNV̑title> + <title>֘AƃRNV̑title> - <para>It is possible to eagerly join in the <literal>Dog</literal> to - avoid the possible extra roundtrip for initializing the proxy. This is - done via the <literal>addJoin()</literal> method, which allows you to - join in an association or collection.</para> - - <para>vLV邽߂̗]ȃhgbviroundtripj邽߁A + <para>vLV邽߂̗]ȏ邽߁A <literal>Dog</literal> ̒őł܂B <literal>addJoin()</literal> \bhɂs܂B - ֘A̓RNVɌł܂B</para> + ֘A̓RNVɌł܂B + </para> <programlisting><![CDATA[sess.createSQLQuery("SELECT c.ID, NAME, BIRTHDATE, DOG_ID, D_ID, D_NAME FROM CATS c, DOGS d WHERE c.DOG_ID = d.D_ID") .addEntity("cat", Cat.class) .addJoin("cat.dog"); ]]></programlisting> - <para>In this example the returned <literal>Cat</literal>'s will have - their <literal>dog</literal> property fully initialized without any - extra roundtrip to the database. Notice that we added a alias name - ("cat") to be able to specify the target property path of the join. It - is possible to do the same eager joining for collections, e.g. if the - <literal>Cat</literal> had a one-to-many to <literal>Dog</literal> - instead.</para> - <para>̗ŁAԂ <literal>Cat</literal> ́A - f[^x[Xւ̗]ȃhgbviroundtripjȂŁA + f[^x[Xւ̗]ȂŁA Sɏꂽ <literal>dog</literal> vpeB܂B Ώۂ̃vpeBւ̃pXɁA ʖiucatvjƂɒӂĂB @@ -230,99 +156,61 @@ .addJoin("cat.dogs"); ]]></programlisting> - <p>At this stage we are reaching the limits of what is possible with - native queries without starting to enhance the sql queries to make them - usable in Hibernate; the problems starts to arise when returning - multiple entities of the same type or when the default alias/column - names are not enough.</p> - - iparåԈႢHj - <p>݂̂Ƃ - HibernateŎg₷邽߂QLNG邱ƂȂɁA - lCeBuNGƉ\ɂEɗĂ܂B + <para>݂̂Ƃ + HibernateŎg₷邽߂QLNG̊gȂɁA + lCeBuNGʼn\ɂEɗĂ܂B ^̃GeBeBԂۂftHg̕ʖŏ\ł͂ȂꍇɁA - ͋N߂܂B</p> + ͋N߂܂B + </para> </sect2> <sect2> - <title>Returning multiple entities - GeBeB̎擾</title> + <title>GeBeB̎擾</title> - <para>Until now the result set column names are assumed to be the same - as the column names specified in the mapping document. This can be - problematic for SQL queries which join multiple tables, since the same - column names may appear in more than one table.</para> - <para>܂ł́AUgZbg̃J́A }bsOt@CŎw肳ꂽJƓł肵Ă܂B ̃e[uJꍇ邽߁A e[uLNGŖƂȂB</para> - <para>Column alias injection is needed in the following query (which - most likely will fail):</para> - <para>L̂悤ȁisȁjNGł́A - JʖCWFNViJʖ}icolumn alias injectionjKvłB</para> + JʖCWFNVicolumn alias injectionjKvłB</para> <programlisting><![CDATA[sess.createSQLQuery("SELECT c.*, m.* FROM CATS c, CATS m WHERE c.MOTHER_ID = m.ID") .addEntity("cat", Cat.class) .addEntity("mother", Cat.class) ]]></programlisting> - <para>The intention for this query is to return two Cat instances per - row, a cat and its mother. This will fail since there is a conflict of - names since they are mapped to the same column names and on some - databases the returned column aliases will most likely be on the form - "c.ID", "c.NAME", etc. which are not equal to the columns specificed in - the mappings ("ID" and "NAME").</para> - <para>̃NG̈Ӑ}́A - PsƂɂQatCX^XiLƂ̕jƂƂłB - JɃ}bsO邱ƂɂAOՓ˂邽߁ÃNG͎s܂B + PsƂɂQatCX^XA܂Ƃ̕ƂƂłB + JɃ}bsO邱ƂɂOՓ˂邽߁ÃNG͎s܂B x[^x[XɂẮAԂJ̕ʖ "c.ID"A"c.NAME" Ȃǂ̌`ł }bsOŎw肳ꂽJi"ID" "NAME"jƓȂ߁As܂B</para> - <para>The following form is not vulnerable to column name - duplication:</para> - <para>Ľ`́AJdĂvinot vulnerablejłB</para> + <para>Ľ`́AJdĂłB</para> <programlisting><![CDATA[sess.createSQLQuery("SELECT {cat.*}, {mother.*} FROM CATS c, CATS m WHERE c.MOTHER_ID = m.ID") .addEntity("cat", Cat.class) .addEntity("mother", Cat.class) ]]></programlisting> - <para>This query specified:</para> - <para>̃NGŎw肳̂LɎ܂B</para> <itemizedlist> <listitem> - <para>the SQL query string, with placeholders for Hibernate to - inject column aliases</para> <para>SQLNG iHibernateJ̕ʖ߂̃v[Xz_ށj</para> </listitem> <listitem> - <para>the entities returned by the query</para> <para>NGɂĕԂGeBeB</para> </listitem> </itemizedlist> - <para>The {cat.*} and {mother.*} notation used above is a shorthand for - "all properties". Alternatively, you may list the columns explicity, but - even in this case we let Hibernate inject the SQL column aliases for - each property. The placeholder for a column alias is just the property - name qualified by the table alias. In the following example, we retrieve - Cats and their mothers from a different table (cat_log) to the one - declared in the mapping metadata. Notice that we may even use the - property aliases in the where clause if we like.</para> - <para>ŎgpĂcat.*} {mother.*} Ƃ\ĹA uׂẴvpeBvȗ`łB AIɃJĂłA - ̏ꍇ́AHibernateɊevpeBɑΉLJ̕ʖł傤B + ̏ꍇ́AHibernateɊevpeBɑΉLJ̕ʖł傤B J̕ʖ̂߂̃v[Xz_́Ae[u̕ʖɂďCvpeBłB Ĺ̗Aʂ̃e[u cat_log }bsO^f[^Œꂽ Cat Ƃ̕܂B @@ -338,28 +226,16 @@ ]]></programlisting> <sect3 id="querysql-aliasreferences" revision="2"> - <title>Alias and property references - ʖƃvpeB̃t@XíAQlj</title> + <title>ʖƃvpeB̃t@X</title> - <para>For most cases the above alias injection is needed, but for - queries relating to more complex mappings like composite properties, - inheritance discriminators, collections etc. there are some specific - aliases to use to allow Hibernate to inject the proper aliases.</para> - - <para>̏ꍇÂ悤ȕʖCWFNViʖ}KvłB + <para>̏ꍇÂ悤ȕʖCWFNVKvłB AvpeBApʎqARNVȂǂ̂悤- Gȃ}bsOƊ֘AGȂłibut for̖B + Gȃ}bsOƊ֘AGȂłB ʖp邱ƂɂAHibernate͓Kȕʖ܂B</para> - <para>The following table shows the different possibilities of using - the alias injection. Note: the alias names in the result are examples, - each alias will have a unique and probably different name when - used.</para> - - <para>ʖCWFNViʖ}Ďgpł̂\Ɏ܂B + <para>ʖCWFNVƂĎgpł̂\Ɏ܂B ӁF\̕ʖ͈łB ꂼʖ͈łgpɂ͂炭قȂ閼O܂B</para> -܂ <table frame="topbot" id="aliasinjection-summary"> <title>ʖɑ}O</title> @@ -436,72 +312,51 @@ </sect3> </sect2> - <sect2> - <title>Returning non-managed entities - ǗȂGeBeB̎擾</title> + <title>ǗȂGeBeB̎擾</title> - <para>It is possible to apply a ResultTransformer to native sql queries. Allowing it to e.g. return non-managed entities.</para> - <para>lCeBuSQLNGResultTransformer pł܂B L̂悤ɁAႦAǗȂGeBeB܂B</para> <programlisting><![CDATA[sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS") .setResultTransformer(Transformers.aliasToBean(CatDTO.class))]]></programlisting> - <para>This query specified:</para> - <para>̃NGŎw肳̂LɎ܂B</para> <itemizedlist> <listitem> - <para>the SQL query string</para> <para>SQLNGara> </listitem> <listitem> - <para>a result transformer</para> <para>ʂ</para> </listitem> </itemizedlist> - <para> - The above query will return a list of <literal>CatDTO</literal> which has been instantiated and injected the values of NAME and BIRTHNAME into its corresponding - properties or fields. - </para> - <para>̃NǴACX^XANAME BIRTHDATE ̒l ΉpeB̓tB[hɑ}<literal>CatDTO</literal> ̃Xg܂B</para> </sect2> <sect2> - <title>Handling inheritance@@p̐title> + <title>p̐title> - <para>Native sql queries which query for entities that is mapped as part - of an inheritance must include all properties for the baseclass and all - it subclasses.</para> - <para>p̈ꕔƂă}bsOꂽGeBeB킹CeBuSQLNǴA x[X̃NXƂׂ̂ẴTuNX̃vpeBׂĂ܂ȂȂ/para> </sect2> <sect2> - <title>Parameters@@p[^</title> + <title>p[^</title> - <para>Native sql queries support positional as well as named - parameters:</para> + <para>lCeBuSQLNǴAȉ̂悤ɁA + Otp[^i:namejƓlɈʒup[^|[g܂B</para> - <para>lCeBuSQLNǴAʒup[^i?jƓ悤ɁA - ̂悤ȖOtp[^i:namej|[g܂B</para> - <programlisting><![CDATA[Query query = sess.createSQLQuery("SELECT * FROM CATS WHERE NAME like ?").addEntity(Cat.class); List pusList = query.setString(0, "Pus%").list(); query = sess.createSQLQuery("SELECT * FROM CATS WHERE NAME like :name").addEntity(Cat.class); List pusList = query.setString("name", "Pus%").list(); ]]></programlisting> </sect2> -܂ </sect1> @@ -584,10 +439,6 @@ WHERE person.NAME LIKE :namePattern </sql-query>]]></programlisting> - <para>You can alternatively use the resultset mapping information in your - hbm files directly in java code.</para> - <para>Ahbmt@CUgZbg̃}bsO avaR[h̒Ŏgpł܂B</para> @@ -596,7 +447,6 @@ ) .setResultSetMapping("catAndKitten") .list();]]></programlisting> -܂ <sect2 id="propertyresults"> <title>ʖIɎw肷邽߂return-property </title> Modified: trunk/Hibernate3/doc/reference/ja/modules/tutorial.xml =================================================================== --- trunk/Hibernate3/doc/reference/ja/modules/tutorial.xml 2006-08-09 21:12:56 UTC (rev 10237) +++ trunk/Hibernate3/doc/reference/ja/modules/tutorial.xml 2006-08-10 00:27:25 UTC (rev 10238) @@ -6,22 +6,12 @@ <title>O</title> <para> - This chapter is an introductory tutorial for new users of Hibernate. We start - with a simple command line application using an in-memory database and develop - it in easy to understand steps. - </para> - <para> ̏͂ibernate߂Ďg[Uȃ`[gAłB Cf[^x[XȒPȃR}hCAvP[V߁A 킩߂܂B </para> <para> - This tutorial is intended for new users of Hibernate but requires Java and - SQL knowledge. It is based on a tutorial by Michael Gloegl, the third-party - libraries we name are for JDK 1.4 and 5.0. You might need others for JDK 1.3. - </para> - <para> ̃`[gAibernate߂Ďg[U肵Ă܂A avaQLɂĂ̒mKvłB Michael Gloegl̎`[gA~ɂĂ܂A @@ -30,10 +20,6 @@ </para> <para> - The source code for the tutorial is included in the distribution in the - <literal>doc/reference/tutorial/</literal> directory. - </para> - <para> `[gÃ\[XR[hibernatefBXgr[V <literal>doc/reference/tutorial/</literal> ɂB </para> @@ -44,33 +30,18 @@ <title>p[g1 - ߂ĂibernateAvP[V</title> <para> - First, we'll create a simple console-based Hibernate application. We use an - Java database (HSQL DB), so we do not have to install any database server. - </para> - <para> ŏɃR\[x[X̊ȒPibernateAvP[V܂B Javaf[^x[XiHSQL DBj𗘗pŁA f[^x[XT[oXg[v͂ </para> <para> - Let's assume we need a small database application that can store events we want to - attend, and information about the hosts of these events. - </para> - <para> ɏȃf[^x[XAvP[VKvƂ܂傤B ̃AvP[Vɂ͏oȂCxgƁA ̃Cxg̃zXgɂĂ̏[̂Ƃ܂B </para> <para> - The first thing we do, is set up our development directory and put all the - Java libraries we need into it. Download the Hibernate distribution from the - Hibernate website. Extract the package and place all required libraries - found in <literal>/lib</literal> into into the <literal>/lib</literal> directory - of your new development working directory. It should look like this: - </para> - <para> ܂ŏɂ邱Ƃ͊Jp̃fBNgbgAbvāA KvƂȂ邷ׂĂavaCuu邱ƂłB HibernateEFuTCgbernatefBXgr[VE[hĂB @@ -93,14 +64,6 @@ log4j.jar ]]></programlisting> <para> - This is the minimum set of required libraries (note that we also copied - hibernate3.jar, the main archive) for Hibernate <emphasis>at the time of writing</emphasis>. - The Hibernate release you are using might require more or less libraries. See the - <literal>README.txt</literal> file in the <literal>lib/</literal> directory of the - Hibernate distribution for more information about required and optional third-party - libraries. (Actually, Log4j is not required but preferred by many developers.) - </para> - <para> ꂪ <emphasis>{hLgM_ł/emphasis> Hibernate̕KvŒ̃Cuł iCA[JCuibernate3.jars[Ă邱ƂɒӂĂjB Hibernatẽo[WɂĂ͂KvȃCusvȃCu邩@@ -111,9 +74,6 @@ </para> <para> - Next we create a class that represents the event we want to store in database. - </para> - <para> Ƀf[^x[XɊi[xgNX܂B </para> @@ -121,7 +81,7 @@ <title>ŏ̃NX</title> <para> - Our first persistent class is a simple JavaBean class with some properties: + ŏ̉iNX́AvpeBVvavaBeanłF </para> <programlisting><![CDATA[package events; @@ -162,13 +122,6 @@ }]]></programlisting> <para> - You can see that this class uses standard JavaBean naming conventions for property - getter and setter methods, as well as private visibility for the fields. This is - a recommended design - but not required. Hibernate can also access fields directly, - the benefit of accessor methods is robustness for refactoring. The no-argument - constructor is required to instantiate an object of this class through reflection. - </para> - <para> ̂Ƃ̃NX̓tB[hprivatẻĂƓɁA JavaBeanW̃Qb^[AZb^[\bh̖K]Ă܂B ̂悤Ȑv͐܂K{ł͂@@ -179,17 +132,6 @@ </para> <para> - The <literal>id</literal> property holds a unique identifier value for a particular event. - All persistent entity classes (there are less important dependent classes as well) will need - such an identifier property if we want to use the full feature set of Hibernate. In fact, - most applications (esp. web applications) need to distinguish objects by identifier, so you - should consider this a feature rather than a limitation. However, we usually don't manipulate - the identity of an object, hence the setter method should be private. Only Hibernate will assign - identifiers when an object is saved. You can see that Hibernate can access public, private, - and protected accessor methods, as well as (public, private, protected) fields directly. The - choice is up to you and you can match it to fit your application design. - </para> - <para> <literal>id</literal> vpeB́ACxgɑ郆j[NȎʎq̒l܂B Hibernate̊Sȋ@\AׂẲiGeBeBNX iǏdvł͂ȂˑNXƂj @@ -205,12 +147,6 @@ </para> <para> - The no-argument constructor is a requirement for all persistent classes; Hibernate - has to create objects for you, using Java Reflection. The constructor can be - private, however, package visibility is required for runtime proxy generation and - efficient data retrieval without bytecode instrumentation. - </para> - <para> ȂRXgN^ׂ͂ẲiNXɕK{łB HibernateJavãtNVāAIuWFNgȂȂ߂łB RXgN^vateɂ邱Ƃ͉\łA @@ -219,10 +155,6 @@ </para> <para> - Place this Java source file in a directory called <literal>src</literal> in the - development folder, and in its correct package. The directory should now look like this: - </para> - <para> JtH_<literal>src</literal> ƂfBNg̓KȃpbP[WɁA ava\[Xt@CuĂB ̎_ŃfBNg͈ȉ̂悤ɂȂĂłF @@ -236,9 +168,6 @@ Event.java]]></programlisting> <para> - In the next step, we tell Hibernate about this persistent class. - </para> - <para> ̃Xebvł́AHibernateɂ̉iNX̏܂B </para> @@ -248,12 +177,6 @@ <title>}bsOt@C</title> <para> - Hibernate needs to know how to load and store objects of the persistent class. - This is where the Hibernate mapping file comes into play. The mapping file - tells Hibernate what table in the database it has to access, and what columns - in that table it should use. - </para> - <para> HibernatéAǂ̂悤ɉiNX̃IuWFNg[hi[悢vB ibernate}bsOt@Coꂵ܂B }bsOt@ĆAf[^x[Xǂ̃e[uɃANZXȂȂA @@ -261,9 +184,6 @@ </para> <para> - The basic structure of a mapping file looks like this: - </para> - <para> }bsOt@C̊Iȍ\͂̂悤ɂȂF </para> @@ -277,16 +197,6 @@ </hibernate-mapping>]]></programlisting> <para> - Note that the Hibernate DTD is very sophisticated. You can use it for - auto-completion of XML mapping elements and attributes in your editor or - IDE. You also should open up the DTD file in your text editor - it's the - easiest way to get an overview of all elements and attributes and to see - the defaults, as well as some comments. Note that Hibernate will not - load the DTD file from the web, but first look it up from the classpath - of the application. The DTD file is included in <literal>hibernate3.jar</literal> - as well as in the <literal>src/</literal> directory of the Hibernate distribution. - </para> - <para> Hibernate DTDɐ邱ƂɒڂĂB TD́AGfB^EłML}bsOvfƑ̃I[gRv[V@\ɗpł܂B ܂DTDt@CLXgGfB^ŊJĂ݂ĂB @@ -299,21 +209,11 @@ </para> <para> - We will omit the DTD declaration in future examples to shorten the code. It is - of course not optional. - </para> - <para> ȍ~̗̓R[h邽߂TD錾܂B RłIvVł͂ </para> <para> - Between the two <literal>hibernate-mapping</literal> tags, include a - <literal>class</literal> element. All persistent entity classes (again, there - might be dependent classes later on, which are not first-class entities) need - such a mapping, to a table in the SQL database: - </para> - <para> 2<literal>hibernate-mapping</literal> ^O̊Ԃ <literal>class</literal> vf߂ĂB ׂẲiGeBeBNXiO܂A @@ -330,13 +230,6 @@ </hibernate-mapping>]]></programlisting> <para> - So far we told Hibernate how to persist and load object of class <literal>Event</literal> - to the table <literal>EVENTS</literal>, each instance represented by a row in that table. - Now we continue with a mapping of the unique identifier property to the tables primary key. - In addition, as we don't want to care about handling this identifier, we configure Hibernate's - identifier generation strategy for a surrogate primary key column: - </para> - <para> Ŏ́A<literal>Event</literal> NX̃IuWFNg <literal>EVENTS</literal> e[uɑāAǂ̂悤ɉi胍[h肷 HibernateɋĂ܂BČX̃CX^X̓e[u̍sƂĕ\B @@ -356,18 +249,6 @@ </hibernate-mapping>]]></programlisting> <para> - The <literal>id</literal> element is the declaration of the identifer property, - <literal>name="id"</literal> declares the name of the Java property - - Hibernate will use the getter and setter methods to access the property. - The column attribute tells Hibernate which column of the - <literal>EVENTS</literal> table we use for this primary key. The nested - <literal>generator</literal> element specifies the identifier generation strategy, - in this case we used <literal>native</literal>, which picks the best strategy depending - on the configured database (dialect). Hibernate supports database generated, globally - unique, as well as application assigned identifiers (or any strategy you have written - an extension for). - </para> - <para> <literal>id</literal> vf͎ʎqvpeB̐錾ł <literal>name="id"</literal> avavpeB̖O܂B Hibernate͂̃vpeBփANZX邽߂ɃQb^[AZb^[\bh܂B @@ -381,11 +262,6 @@ </para> <para> - Finally we include declarations for the persistent properties of the class in - the mapping file. By default, no properties of the class are considered - persistent: - </para> - <para> ŌNX̉ivpeB̐錾bsOt@CɊ܂߂܂B ftHgł́ANX̃vpeB͉iƌȂ </para> @@ -404,12 +280,6 @@ </hibernate-mapping>]]></programlisting... [truncated message content] |