2010-10-15 19 views
7

जब मैं बना रहता हूं (जेपीए - जावा दृढ़ता एपीआई का उपयोग करके) एक स्थिरता इकाई और फिर दृढ़ता संस्थाएं वे स्वचालित रूप से डेटाबेस में संबंधित तालिकाओं और फ़ील्ड बनाते हैं।जेपीए के साथ डेटाबेस बनाएँ?

क्या मैं इसे डेटाबेस बनाने के लिए भी बना सकता हूं (यदि यह अस्तित्व में नहीं है)?

मेरे Objectif है:

मैं इसे डेटाबेस के अंदर टेबल और क्षेत्रों, लेकिन डेटाबेस बनाता है, और यदि डेटाबेस से पहले बनाया नहीं गया है (हाथ से) मतलब - सब कुछ विफल रहता है। तो प्रोजेक्ट चलाने से पहले (जो आवश्यक होने पर ताल और फ़ील्ड उत्पन्न करेगा) मुझे पहले डेटाबेस (हाथ से) बनाना होगा।

मैं का उपयोग करें: ग्रहण (जावा, हाइबरनेट, फ्लेक्स/एयर), MySQL

सभी जानकारी

+0

देख http://opensource.atlassian.com/projects/hibernate/browse/HHH-1853 – Bozho

+0

जब मैं इरादा समझते हैं, मैं इस एक होने के लिए लगता है बहुत बुरा विचार। व्यक्तिगत रूप से, मैं उपयोगकर्ता को डेटाबेस बनाने के लिए उपयोग किए गए उपयोगकर्ता के बजाय उसी उपयोगकर्ता का उपयोग नहीं करता। –

उत्तर

8

डेटाबेस मैन्युअल रूप से निर्मित होता है के लिए धन्यवाद (Fortunatly आप नहीं पूछा क्यों ;-)। जो आपके डेटाबेस सर्वर से कनेक्ट करने के लिए उपयोग किए जाने वाले उपयोगकर्ता/पासवर्ड संयोजन के समान है, जो डीबी से कनेक्ट करने के लिए पहले से मौजूद होना चाहिए।

2

इस समस्या का समाधान मेरे सही निम्नलिखित जोड़ने के लिए इससे पहले कि मैं अपनी इकाई प्रबंधक बनाने था:

Connection connection = 
     DriverManager.getConnection("jdbc:mysql://localhost/?user=" + DB_USER); 
    Statement stmt = connection.createStatement(); 
    stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS " + DB_NAME); 

आप की आवश्यकता होगी करने के लिए या तो चारों ओर है कि एक आज़माएं/कैच ब्लॉक के साथ या जोड़ने के एक फेंकता को SQLException अंकन वह कार्य जिसमें यह मौजूद है। तो, उदाहरण के लिए, यहाँ मेरी initEntityManager समारोह है:

public static void initEntityManager() throws SQLException { 
    Connection connection = 
     DriverManager.getConnection("jdbc:mysql://localhost/?user=" + DB_USER); 
    Statement stmt = connection.createStatement(); 
    stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS " + DB_NAME); 
    emf = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME); 
    em = emf.createEntityManager(); 
} 
संबंधित मुद्दे