পুকুর
- পুলিং মেকানিজম হ'ল আগাম বস্তু তৈরির উপায়। যখন একটি ক্লাস বোঝা হয়।
- এটি অ্যাপ্লিকেশনটির উন্নতি করে
performance
[অবজেক্ট-ডেটাতে কোনও ক্রিয়া সম্পাদন করতে একই বস্তুর পুনরায় ব্যবহার করে] এবং memory
[অনেকগুলি বিষয় বরাদ্দকরণ এবং ডি-বরাদ্দকরণ একটি গুরুত্বপূর্ণ মেমরি পরিচালনা ওভারহেড তৈরি করে]।
- আমরা একই অবজেক্টটি ব্যবহার করছি, আবর্জনা সংগ্রহের লোড হ্রাস করার কারণে অবজেক্ট ক্লিন আপের প্রয়োজন নেই।
Ool পুলিং [ Object
পুল, String
কনস্ট্যান্ট পুল, Thread
পুল, সংযোগ পুল]
স্ট্রিং কনস্ট্যান্ট পুল
- স্ট্রিং আক্ষরিক পুল প্রতিটি স্বতন্ত্র স্ট্রিং মানের কেবল একটি অনুলিপি বজায় রাখে। যা অবশ্যই পরিবর্তনযোগ্য হবে।
- ইন্টার্ন পদ্ধতিটি চালু করা হলে, সমান পদ্ধতিতে পুলটিতে একই সামগ্রীর সাথে অবজেক্টের প্রাপ্যতা পরীক্ষা করে। Ool পুলে স্ট্রিং-অনুলিপি উপলব্ধ থাকলে রেফারেন্সটি দেয়। «অন্যথায়, স্ট্রিং অবজেক্টটি পুলটিতে যুক্ত করা হয় এবং রেফারেন্সটি দেয়।
উদাহরণ: পুল থেকে অনন্য বিষয় যাচাই করতে স্ট্রিং ।
public class StringPoolTest {
public static void main(String[] args) { // Integer.valueOf(), String.equals()
String eol = System.getProperty("line.separator"); //java7 System.lineSeparator();
String s1 = "Yash".intern();
System.out.format("Val:%s Hash:%s SYS:%s "+eol, s1, s1.hashCode(), System.identityHashCode(s1));
String s2 = "Yas"+"h".intern();
System.out.format("Val:%s Hash:%s SYS:%s "+eol, s2, s2.hashCode(), System.identityHashCode(s2));
String s3 = "Yas".intern()+"h".intern();
System.out.format("Val:%s Hash:%s SYS:%s "+eol, s3, s3.hashCode(), System.identityHashCode(s3));
String s4 = "Yas"+"h";
System.out.format("Val:%s Hash:%s SYS:%s "+eol, s4, s4.hashCode(), System.identityHashCode(s4));
}
}
সংযোগ পুল প্রকার -4 ব্যবহার ড্রাইভার 3rd পার্টি লাইব্রেরি ব্যবহার [ DBCP2
, c3p0
, Tomcat JDBC
]
Type 4 - The Thin driver converts JDBC calls directly into the vendor-specific database protocol Ex[Oracle - Thick, MySQL - Quora].
উইকি
সংযোগ পুল ব্যবস্থায়, শ্রেণিটি লোড হয়ে গেলে এটি physical JDBC connection
বস্তুগুলি পায় এবং ব্যবহারকারীর কাছে একটি মোড়ানো শারীরিক সংযোগ অবজেক্ট সরবরাহ করে। PoolableConnection
প্রকৃত সংযোগের চারপাশে একটি মোড়ক।
getConnection()
ফ্রি মোড়ক -সংযোগের একটি চয়ন করুন সংযোগ অবজেক্টটি ফর্ম এবং এটি প্রদান করে।
close()
এটি বন্ধ করার পরিবর্তে মোড়কযুক্ত সংযোগটি পুলটিতে ফিরিয়ে দেয়।
উদাহরণ: জাভা 7 সহ ~ ডিবিসিপি 2 সংযোগ পুল ব্যবহার করা হচ্ছে [ try-with-resources
]
public class ConnectionPool {
static final BasicDataSource ds_dbcp2 = new BasicDataSource();
static final ComboPooledDataSource ds_c3p0 = new ComboPooledDataSource();
static final DataSource ds_JDBC = new DataSource();
static Properties prop = new Properties();
static {
try {
prop.load(ConnectionPool.class.getClassLoader().getResourceAsStream("connectionpool.properties"));
ds_dbcp2.setDriverClassName( prop.getProperty("DriverClass") );
ds_dbcp2.setUrl( prop.getProperty("URL") );
ds_dbcp2.setUsername( prop.getProperty("UserName") );
ds_dbcp2.setPassword( prop.getProperty("Password") );
ds_dbcp2.setInitialSize( 5 );
ds_c3p0.setDriverClass( prop.getProperty("DriverClass") );
ds_c3p0.setJdbcUrl( prop.getProperty("URL") );
ds_c3p0.setUser( prop.getProperty("UserName") );
ds_c3p0.setPassword( prop.getProperty("Password") );
ds_c3p0.setMinPoolSize(5);
ds_c3p0.setAcquireIncrement(5);
ds_c3p0.setMaxPoolSize(20);
PoolProperties pool = new PoolProperties();
pool.setUrl( prop.getProperty("URL") );
pool.setDriverClassName( prop.getProperty("DriverClass") );
pool.setUsername( prop.getProperty("UserName") );
pool.setPassword( prop.getProperty("Password") );
pool.setValidationQuery("SELECT 1");// SELECT 1(mysql) select 1 from dual(oracle)
pool.setInitialSize(5);
pool.setMaxActive(3);
ds_JDBC.setPoolProperties( pool );
} catch (IOException e) { e.printStackTrace();
} catch (PropertyVetoException e) { e.printStackTrace(); }
}
public static Connection getDBCP2Connection() throws SQLException {
return ds_dbcp2.getConnection();
}
public static Connection getc3p0Connection() throws SQLException {
return ds_c3p0.getConnection();
}
public static Connection getJDBCConnection() throws SQLException {
return ds_JDBC.getConnection();
}
}
public static boolean exists(String UserName, String Password ) throws SQLException {
boolean exist = false;
String SQL_EXIST = "SELECT * FROM users WHERE username=? AND password=?";
try ( Connection connection = ConnectionPool.getDBCP2Connection();
PreparedStatement pstmt = connection.prepareStatement(SQL_EXIST); ) {
pstmt.setString(1, UserName );
pstmt.setString(2, Password );
try (ResultSet resultSet = pstmt.executeQuery()) {
exist = resultSet.next(); // Note that you should not return a ResultSet here.
}
}
System.out.println("User : "+exist);
return exist;
}
jdbc:<DB>:<drivertype>:<HOST>:<TCP/IP PORT>:<dataBaseName>
jdbc:
oracle
:thin:@localhost:1521:myDBName
jdbc:
mysql
://localhost:3306/myDBName
connectionpool.properties
URL : jdbc:mysql://localhost:3306/myDBName
DriverClass : com.mysql.jdbc.Driver
UserName : root
Password :
ওয়েব অ্যাপ্লিকেশন: সংযোগের সমস্যাটি এড়াতে যখন সমস্ত সংযোগ বন্ধ হয়ে যায় [মাইএসকিউএল "ওয়েটটাইমআউটআউট" ডিফল্ট 8 ঘন্টা] অন্তর্নিহিত ডিবি দিয়ে সংযোগটি পুনরায় খোলার জন্য।
আপনি প্রতিটি সংযোগ টেস্ট করার জন্য এটি টেস্টঅনবোর = সত্য এবং বৈধকরণকুচি = "নির্বাচন 1" সেট করে এবং মাইএসকিউএল সার্ভারের জন্য স্বতঃসিদ্ধ হওয়ার সাথে সাথে স্বতঃসংযোগ ব্যবহার করবেন না। সমস্যা
===== ===== context.xml ===== =====
<?xml version="1.0" encoding="UTF-8"?>
<!-- The contents of this file will be loaded for a web application -->
<Context>
<Resource name="jdbc/MyAppDB" auth="Container"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
type="javax.sql.DataSource"
initialSize="5" minIdle="5" maxActive="15" maxIdle="10"
testWhileIdle="true"
timeBetweenEvictionRunsMillis="30000"
testOnBorrow="true"
validationQuery="SELECT 1"
validationInterval="30000"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/myDBName"
username="yash" password="777"
/>
</Context>
===== ===== web.xml ===== =====
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/MyAppDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
===== ===== DBOperations ===== =====
servlet « init() {}
Normal call used by sevlet « static {}
static DataSource ds;
static {
try {
Context ctx=new InitialContext();
Context envContext = (Context)ctx.lookup("java:comp/env");
ds = (DataSource) envContext.lookup("jdbc/MyAppDB");
} catch (NamingException e) { e.printStackTrace(); }
}
এগুলিও দেখুন: