کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

درس بیستم : آشنایی با چهارچوب کاری JDBC در Spring

آشنایی با چهارچوب کاری JDBC در Spring

هنگامی که در محیط های برنامه نویسی جاوا ، برای کار با پایگاه های داده از زبان قدیمی JDBC استفاده می کنیم ، کار برنامه نویسی کمی سخت می شود . در این شرایط نوشتن کدهای غیر ضروری برای مدیریت استثنا های برنامه ، باز و بسته کردن ارتباط با پایگاه داده و ... کمی دشوار است .
از طرف دیگر ، چهارچوب کاری JDBC در Spring ، با رویکردی جدید انجام کلیه امور مرتبط با پایگاه داده از کارهای معمولی تا سطح بالا را برعهده گرفته است . برای مثال Spring JDBC ، تمهیدات لازم جهت باز کردن ارتباط با پایگاه داده ، آماده نمودن دستورات SQL جهت اجرا ، پردازش استثناها و مدیریت تراکنش ها و در نهایت بستن ارتباط را فراهم کرده است .
بنابراین تنها کاری که شما لازم است انجام دهید تعیین پارامترهای ضروری برای اتصال به پایگاه داده و نوشتن دستورات SQL برای دریافت اطلاعات مورد نظر از پایگاه داده است .
Spring JDBC چندین روش مختلف جهت اتصال به پایگاه داده و همچنین کلاس های لازم جهت ارتباط با آن را فراهم نموده است . ما در این درس از معمول ترین و رایج ترین راه برای ارتباط با پایگاه داده ، یعنی استفاده از کلاس Jdbc Template در چهارچوب کاری Spring استفاده می کنیم . کلاس JdbcTemplate ، کلاس اصلی و مرکزی Spring جهت ارتباط و کار با پایگاه داده است .


آموزش کلاس JdbcTemplate Class

کلاس JdbcTemplate ، دستورات SQL ، Qnery های آن را اجرا کرده ، Statment های برنامه را به روز نموده و Stored Procedure ها را فراخوانی و مدیریت می کند . همچنین این کلاس ، محتویات ResultSet ها را خوانده و Parameter های مورد نظر را از آنها استخراج می کند .
از طرف دیگر کلاس Jdbc Template خطاهای JDBC را گرفته و آنها را به generic تبدیل می کند . سپس اطلاعات بیشتری به خطاها اضافه کرده و آنها را در سلسله مراتب خطاهای برنامه در پکیج org.spring framework.doo قرار می دهد .
هر نسخه ای از کلاس JdbcTemplate ایجد شود به صورت threadsafe ( انتقال امن داده ) تنظیم می شود . بنابراین شما می توانید یک نسخه واحد از کلاس JdbcTemplate ایجاد کرده و آن را به چندین DAO مورد نظر خود تزریق کنید .
یک تمرین رایج در هنگام استفاده از کلاس JdbcTemplate ، تنظیم یک DataSource در فایل پیکربندی اطلاعات برنامه یا Spring Configuration file است . پس بایستی این Data Source مشترک را به وسیله dependency-inject شی Bean به کلاس های DAO مورد نظر خود تزریق نمایید . در نهایت کلاس JdbvTemplate در بخش Setter شی Data Source قرار می گیرد .


تنظیم منبع داده ( Data Source )

در بخش مثال عملی ، ابتدا یک جدول به نام Student را در پایگاه داده Test ایجاد می کنیم . در اینجا فرض بر این است که شما در حال کار با پایگاه داده MySQL هستید ، اگر با پایگاه داده دیگری می خواهیم کار کنید بایستی فایل DDL برنامه و همچنین SQL Query های خود را تغییر دهید .



CREATE TABLE Student(

   ID   INT NOT NULL AUTO_INCREMENT,

   NAME VARCHAR(20) NOT NULL,

   AGE  INT NOT NULL,

   PRIMARY KEY (ID)

);

در مرحله بعد بایستی یک Data Source را برای کلاس Jdbc Template فراهم کنیم تا بتواند شرایط خود را جهت اتصال به پایگاه داده تنظیم نماید . شما می توانید تنظیمات لازم جهت Data Source را همانطور که در فایل XML زیر نشان داده شده است ، تعیین نمایید


 id="dataSource"

class="org.springframework.jdbc.datasource.DriverManagerDataSource">

    name="driverClassName" value="com.mysql.jdbc.Driver"/>

    name="url" value="jdbc:mysql://localhost:3306/TEST"/>

    name="username" value="root"/>

    name="password" value="password"/>

آموزش شی Data Access Object یا DAO

DAO مخفف عبارت Data Access Object بوده که جهت تعامل با پایگاه داده به کار می رود . DAO ها برای این وجود دارند تا بتوانند اطلاعات را از پایگاه داده خوانده و اطلاعات جدید را به آنها وارد نمایند . DAO بایستی قابلیت های خود را در قالب یک رابط کاربری ارائه داده تا سایر اجزای Application بتوانند از طریق آنها به اطلاعات دسترسی داشته باشند .
قابلیت پشتیبانی از DAO در Spring ، امکان این را فراهم کرده تا به راحتی با تکنولوژی مختلف پایگاه داده مثل JDBC ، Hibrnate و ... در صورت پایدار و مطمئن کار نماییم .


اجرای دستورات SQL در Spring

در این بخش به آموزش انجام چهار عمل خواندن ، نوشتن ، ایجاد و حذف اطلاعات که به اختصار ( Delete و Update و Read و Creation ) CRUD نامیده می شود ، در محیط Spring می پردازیم . CRUD در Spring به وسیله دستورات SQL و شی Jdbc Template انجام می شود .
کد مثال جهت جستجوی یک مقدار عددی در پایگاه داده :



String SQL = "select count(*) from Student";

int rowCount = jdbcTemplateObject.queryForInt( SQL );

کد مثال جهت جستجوی یک مقدار Long در پایگاه داده :



String SQL = "select count(*) from Student";

long rowCount = jdbcTemplateObject.queryForLong( SQL );

کد مثال مربوط به یک Query با Variable bind :



+String SQL = "select age from Student where id = ?";

int age = jdbcTemplateObject.queryForInt(SQL, new Object[]{10});

کد مثال جهت جستجوی یک مقدار String در پایگاه داده :



String SQL = "select name from Student where id = ?";

String name = jdbcTemplateObject.queryForObject(SQL, new Object[]{10}, String.class);

کد مثال جهت جستجو و بازگرداندن مقادیر یک شی object :



String SQL = "select * from Student where id = ?";

Student student = jdbcTemplateObject.queryForObject(SQL, 

                  new Object[]{10}, new StudentMapper());

 

public class StudentMapper implements RowMapper {

   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {

      Student student = new Student();

      student.setID(rs.getInt("id"));

      student.setName(rs.getString("name"));

      student.setAge(rs.getInt("age"));

      return student;

   }

}

کد مثال جهت یافتن و بازگرداندن مقدار چندین شی :



String SQL = "select * from Student";

List students = jdbcTemplateObject.query(SQL,

                         new StudentMapper());

 

public class StudentMapper implements RowMapper {

   public Student mapRow(ResultSet rs, int rowNum) throws SQLException {

      Student student = new Student();

      student.setID(rs.getInt("id"));

      student.setName(rs.getString("name"));

      student.setAge(rs.getInt("age"));

      return student;

   }

}

کد مثال جهت وارد کردن یک سطر جدید در پایگاه داده :



String SQL = "insert into Student (name, age) values (?, ?)";

jdbcTemplateObject.update( SQL, new Object[]{"Zara", 11} );

کد مثال جهت به روز رسانی یک سطر در پایگاه داده :



String SQL = "update Student set name = ? where id = ?";

jdbcTemplateObject.update( SQL, new Object[]{"Zara", 10} );

کد مثال جهت حذف یک سطر row از پایگاه داده :



String SQL = "delete Student where id = ?";

jdbcTemplateObject.update( SQL, new Object[]{20} );

اجرای دستورات DDL :

شما می توانید از متد execute (…) شی Jdbc Template جهت اجرای دستورات SQL یا DDL استفاده کنید . کد مثال زیر ، نحوه ایجاد یک جدول جدید را با استفاده از دستور CREATE نشان میدهد :



String SQL = "CREATE TABLE Student( " +

   "ID   INT NOT NULL AUTO_INCREMENT, " +

   "NAME VARCHAR(20) NOT NULL, " +

   "AGE  INT NOT NULL, " +

   "PRIMARY KEY (ID));"

 

jdbcTemplateObject.execute( SQL );

مثال های عملی کار با JDBC در چهارچوب String

مثال 1 : Spring JDBC Example :

در این مثال به آموزش نحوه یک بذنامه Spring مبتنی بر چهارچوب JDBC خواهیم پرداخت .


مثال 2 : SQL Stored Procedure in Spring :

در مثال دوم نیز به آموزش نحوه فراخوانی و اجرای توابع آماده SQL یا stored Procedure ها در چهارچوب JDBC در Spring خواهیم پرداخت .

1395/05/28 3861 1427
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...