Java Doc for SequenceManagerStoredProcedureImpl.java in  » Database-ORM » db-ojb » org » apache » ojb » broker » util » sequence » Java Source Code / Java DocumentationJava Source Code and Java Documentation

Java Source Code / Java Documentation
1. 6.0 JDK Core
2. 6.0 JDK Modules
3. 6.0 JDK Modules com.sun
4. 6.0 JDK Modules com.sun.java
5. 6.0 JDK Modules sun
6. 6.0 JDK Platform
7. Ajax
8. Apache Harmony Java SE
9. Aspect oriented
10. Authentication Authorization
11. Blogger System
12. Build
13. Byte Code
14. Cache
15. Chart
16. Chat
17. Code Analyzer
18. Collaboration
19. Content Management System
20. Database Client
21. Database DBMS
22. Database JDBC Connection Pool
23. Database ORM
24. Development
25. EJB Server geronimo
26. EJB Server GlassFish
27. EJB Server JBoss 4.2.1
28. EJB Server resin 3.1.5
29. ERP CRM Financial
30. ESB
31. Forum
32. GIS
33. Graphic Library
34. Groupware
35. HTML Parser
36. IDE
37. IDE Eclipse
38. IDE Netbeans
39. Installer
40. Internationalization Localization
41. Inversion of Control
42. Issue Tracking
43. J2EE
44. JBoss
45. JMS
46. JMX
47. Library
48. Mail Clients
49. Net
50. Parser
51. PDF
52. Portal
53. Profiler
54. Project Management
55. Report
56. RSS RDF
57. Rule Engine
58. Science
59. Scripting
60. Search Engine
61. Security
62. Sevlet Container
63. Source Control
64. Swing Library
65. Template Engine
66. Test Coverage
67. Testing
68. UML
69. Web Crawler
70. Web Framework
71. Web Mail
72. Web Server
73. Web Services
74. Web Services apache cxf 2.0.1
75. Web Services AXIS2
76. Wiki Engine
77. Workflow Engines
78. XML
79. XML UI
Java
Java Tutorial
Java Open Source
Jar File Download
Java Articles
Java Products
Java by API
Photoshop Tutorials
Maya Tutorials
Flash Tutorials
3ds-Max Tutorials
Illustrator Tutorials
GIMP Tutorials
C# / C Sharp
C# / CSharp Tutorial
C# / CSharp Open Source
ASP.Net
ASP.NET Tutorial
JavaScript DHTML
JavaScript Tutorial
JavaScript Reference
HTML / CSS
HTML CSS Reference
C / ANSI-C
C Tutorial
C++
C++ Tutorial
Ruby
PHP
Python
Python Tutorial
Python Open Source
SQL Server / T-SQL
SQL Server / T-SQL Tutorial
Oracle PL / SQL
Oracle PL/SQL Tutorial
PostgreSQL
SQL / MySQL
MySQL Tutorial
VB.Net
VB.Net Tutorial
Flash / Flex / ActionScript
VBA / Excel / Access / Word
XML
XML Tutorial
Microsoft Office PowerPoint 2007 Tutorial
Microsoft Office Excel 2007 Tutorial
Microsoft Office Word 2007 Tutorial
Java Source Code / Java Documentation » Database ORM » db ojb » org.apache.ojb.broker.util.sequence 
Source Cross Reference  Class Diagram Java Document (Java Doc) 


java.lang.Object
   org.apache.ojb.broker.util.sequence.AbstractSequenceManager
      org.apache.ojb.broker.util.sequence.SequenceManagerStoredProcedureImpl

SequenceManagerStoredProcedureImpl
public class SequenceManagerStoredProcedureImpl extends AbstractSequenceManager (Code)
This solution will give those seeking an oracle-style sequence generator a final answer (Identity columns really suck).
The SequenceManagerStoredProcedureImpl implementation enabled database sequence key generation for all databases (e.g. MSSQL, MySQL, DB2, ...) with a JDBC 2.0 compliant driver.
First add a new table OJB_NEXTVAL_SEQ to your database.
 CREATE TABLE OJB_NEXTVAL_SEQ
 (
 SEQ_NAME    VARCHAR(150) NOT NULL,
 MAX_KEY     BIGINT,
 CONSTRAINT SYS_PK_OJB_NEXTVAL_SEQ PRIMARY KEY(SEQ_NAME)
 )
 
You will also need the stored procedure OJB_NEXTVAL will will take care of giving you a guaranteed unique sequence number, in multi server environments.
 CREATE PROCEDURE ojb_nextval_proc @SEQ_NAME varchar(100)
 AS
 declare @MAX_KEY BIGINT
 -- return an error if sequence does not exist
 -- so we will know if someone truncates the table
 set @MAX_KEY = 0
 UPDATE OJB_NEXTVAL_SEQ
 SET    @MAX_KEY = MAX_KEY = MAX_KEY + 1
 WHERE  SEQ_NAME = @SEQ_NAME
 if @MAX_KEY = 0
 select 1/0
 else
 select @MAX_KEY
 RETURN @MAX_KEY
 

It is possible to define a sequence-name field-descriptor attribute in the repository file. If such an attribute was not found, the implementation build an extent aware sequence name by its own.
Keep in mind when define a sequence name, that you are responsible to be aware of extents, that is: if you ask for an uid for an interface with several implementor classes, or a baseclass with several subclasses the returned uid have to be unique accross all tables representing objects of the extent in question. Thus you have to use the same sequence-name for all extents.

Implementation configuration properties:

Property Key Property Values
autoNaming Default was 'true'. If set 'true' OJB try to build a sequence name automatic if none found in field-descriptor and set this generated name as sequence-name in field-descriptor. If set 'false' OJB throws an exception if none sequence name was found in field-descriptor.

Limitations:

  • do not use when other application use the native key generation ditto




author:
   Ryan Vanderwerf
author:
   Edson Carlos Ericksson Richter
author:
   Rajeev Kaul
author:
   Thomas Mahler
author:
   Armin Waibel
version:
   $Id: SequenceManagerStoredProcedureImpl.java,v 1.11.2.2 2005/12/21 22:28:41 tomdz Exp $


Field Summary
final protected static  StringPROCEDURE_NAME
    
final protected static  StringSEQ_ID_STRING
    
final protected static  StringSEQ_NAME_STRING
    
final protected static  StringSEQ_TABLE_NAME
    

Constructor Summary
public  SequenceManagerStoredProcedureImpl(PersistenceBroker broker)
    

Method Summary
protected  longbuildNextSequence(PersistenceBroker broker, ClassDescriptor cld, String sequenceName)
     Calls the stored procedure stored procedure throws an error if it doesn't exist.
protected  voidcreateSequence(PersistenceBroker broker, FieldDescriptor field, String sequenceName, long maxKey)
    
protected  longgetUniqueLong(FieldDescriptor field)
     Gets the actual key - will create a new row with the max key of table if it does not exist.
protected  Stringsp_createSequenceQuery(String sequenceName, long maxKey)
    

Field Detail
PROCEDURE_NAME
final protected static String PROCEDURE_NAME(Code)



SEQ_ID_STRING
final protected static String SEQ_ID_STRING(Code)



SEQ_NAME_STRING
final protected static String SEQ_NAME_STRING(Code)



SEQ_TABLE_NAME
final protected static String SEQ_TABLE_NAME(Code)




Constructor Detail
SequenceManagerStoredProcedureImpl
public SequenceManagerStoredProcedureImpl(PersistenceBroker broker)(Code)
Constructor
Parameters:
  broker -




Method Detail
buildNextSequence
protected long buildNextSequence(PersistenceBroker broker, ClassDescriptor cld, String sequenceName) throws LookupException, SQLException, PlatformException(Code)
Calls the stored procedure stored procedure throws an error if it doesn't exist.
Parameters:
  broker -
Parameters:
  cld -
Parameters:
  sequenceName -
throws:
  LookupException -
throws:
  SQLException -



createSequence
protected void createSequence(PersistenceBroker broker, FieldDescriptor field, String sequenceName, long maxKey) throws Exception(Code)
Creates new row in table
Parameters:
  broker -
Parameters:
  field -
Parameters:
  sequenceName -
Parameters:
  maxKey -
throws:
  Exception -



getUniqueLong
protected long getUniqueLong(FieldDescriptor field) throws SequenceManagerException(Code)
Gets the actual key - will create a new row with the max key of table if it does not exist.
Parameters:
  field -
throws:
  SequenceManagerException -



sp_createSequenceQuery
protected String sp_createSequenceQuery(String sequenceName, long maxKey)(Code)
Insert syntax for our special table
Parameters:
  sequenceName -
Parameters:
  maxKey - sequence insert statement



Fields inherited from org.apache.ojb.broker.util.sequence.AbstractSequenceManager
final protected static String GLOBAL_SEQUENCE_NAME(Code)(Java Doc)
final public static String PROPERTY_AUTO_NAMING(Code)(Java Doc)

Methods inherited from org.apache.ojb.broker.util.sequence.AbstractSequenceManager
public void afterStore(JdbcAccess dbAccess, ClassDescriptor cld, Object obj) throws SequenceManagerException(Code)(Java Doc)
public String calculateSequenceName(FieldDescriptor field) throws SequenceManagerException(Code)(Java Doc)
public PersistenceBroker getBrokerForClass()(Code)(Java Doc)
public Properties getConfigurationProperties()(Code)(Java Doc)
public String getConfigurationProperty(String key, String defaultValue)(Code)(Java Doc)
public Platform getPlatform()(Code)(Java Doc)
abstract protected long getUniqueLong(FieldDescriptor field) throws SequenceManagerException(Code)(Java Doc)
public Object getUniqueValue(FieldDescriptor field) throws SequenceManagerException(Code)(Java Doc)
public void setConfigurationProperties(Properties prop)(Code)(Java Doc)
public void setConfigurationProperty(String key, String value)(Code)(Java Doc)
public void setReferenceFKs(Object obj, ClassDescriptor cld) throws SequenceManagerException(Code)(Java Doc)
public boolean useAutoNaming()(Code)(Java Doc)

Methods inherited from java.lang.Object
native protected Object clone() throws CloneNotSupportedException(Code)(Java Doc)
public boolean equals(Object obj)(Code)(Java Doc)
protected void finalize() throws Throwable(Code)(Java Doc)
final native public Class getClass()(Code)(Java Doc)
native public int hashCode()(Code)(Java Doc)
final native public void notify()(Code)(Java Doc)
final native public void notifyAll()(Code)(Java Doc)
public String toString()(Code)(Java Doc)
final native public void wait(long timeout) throws InterruptedException(Code)(Java Doc)
final public void wait(long timeout, int nanos) throws InterruptedException(Code)(Java Doc)
final public void wait() throws InterruptedException(Code)(Java Doc)

www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.