 Dan pertama, saya ingin berterima kasih sudah untuk menghubungi ini untuk kami hari ini dan juga Lazada dan juga Lazada untuk menu. Jadi hari ini, kami akan bercakap tentang SQL View, yang adalah penjelaskan persisten kami dan apa yang kita belajar daripada mengembangkan. Jadi kami akan bercakap lebih tentang pengalaman kami daripada penjelaskan persisten kami. Dan jika anda ada pertanyaan pada sesi, anda boleh tinggalkan kepada Q&A pada akhirnya. Terima kasih. Saya saya Jacob dan saya Kate. Kita berdua software engineer di Green Fossil. Kita membuat perubahan di sekeliling. Seperti yang anda lihat, ini teknologi kami sekarang di sekeliling. Jadi hari ini, kami akan mulakan dengan belakang kami. Kemudian kami akan beritahu anda apa SQL View adalah dan juga mengapa kami membangun penjelaskan persisten kami. Terima kasih kerana mencari beberapa contoh dan demo dan juga apa yang diberikan untuk kami di masa depan. Jadi mulakan dengan belakang kami, kami mulakan pada tahun 2005. Dan semua projek kami terutamanya di Java dengan hibernate. Dan kami dapat tahu bahawa pada tahun ini, kami ingin menjadi lebih berproduktif. Dan juga kami ingin mencari teknologi yang boleh membantu kami membangun sistem yang lebih baik. Jadi pada tahun 2012, kami mencari skala. Dan apabila kami menghubungi skala, kami akan menghubungi pilihan yang mempunyai pilihan persisten kami di skala. Jadi kami mempunyai untuk membangun pilihan persisten kami sendiri. Dan setelah tahun nanti, kami menjadikan versi pertama. Dan akhirnya, pada tahun 2019, kami mengubahnya supaya ia dapat membantu skala 213. Jadi ini pilihan persisten kami. Ini berada di atas skala JTBC. Dan pilihan pilihan pilihan untuk membuat pilihan persisten kami sendiri untuk membuat pilihan pilihan pertempuran mereka sendiri tanpa mempunyai perlukan anotasi dan juga memperlukan pilihan pilihan pilihan. Jadi apabila kami memperlukan pilihan persisten kami, kami akan membuat pilihan persisten kami. Dan dengan beberapa alasan yang dapat menjadikan pilihan kita. Jadi kami akan beritahu kenapa kami membangun pilihan persisten kami. Jadi pertama, kami perlukan pilihan skala dan java untuk mempunyai pilihan bersama. Jadi kami perlu menjadikan yang kami sudah mempunyai pilihan java dalam hidup dan produksi. Dan kami tidak mahu mengambil mereka ke bawah. Jadi kami perlukan versi baru skala untuk mempunyai pilihan pilihan pilihan yang sama. Jadi sebuah alasan cepat. Jadi di sini, kami mempunyai satu pilihan java dan pilihan skala. Jadi kami perlukan mereka berdua untuk menggunakan pilihan yang sama, pilihan yang berlaku dan mencari dari pilihan yang sama. Jadi alasan lain yang mengapa kami mahu mengubah dari alasan dan mengubah pilihan pilihan. Dan kami mahu memberikan pilihan kita lebih kecil untuk membuat pilihan skala yang berlaku. Dan juga untuk memfokus lebih pada langkah sekolah sendiri. Jadi dalam alasan ini, di lantai, kami mempunyai pilihan dari pilihan yang terkenal dari projek java yang lama. Seperti yang anda lihat di sini, anda perlu belajar semua alasan java untuk dapat membuat pilihan pilihan. Jika anda bergerak ke atas ke belakang, di sini kami mempunyai pilihan skala yang dikenal. Jadi bagaimana kita membuat pilihan skala di skala? Pilihan kami. Pertama, anda mempunyai alasan, pilihan pilihan pilihan, dan anda mempunyai pilihan pilihan yang dikenal di sini. Pilihan pilihan. Kemudian, dikulam dan pilihan pilihan. Dan kemudian, dengan alasan pilihan pilihan. Jadi, abang berilihan, alasanвин kita mempunyai alasan pilihan? Untuk menjadi yang ke Hurry Key untuk disable. Dan kemudian, untuk alasan keselapanan, pilihan pilihan pilihan persamaan yang dikenal. Kita ialah alas pilihan pilihan pilihan dsl yang ada di atas dalam Alas Pilihan. Dan juga, media perlukan tabaran. Jadi di sini, analys不好意思-傅 ke curious, sah cubedi pilihan yang diputupi dsg-cичont untuk saya menggunakan penyelidik saya untuk menulis ini, dibandingkan ke lantai. Jadi, di dalam fikiran kita, kita ingin mempunyai kemahiran dalam kemahiran kita. Jadi, kita dapat membuat perangkat kompleks dan mengambil data dari kabel yang berbeza tanpa membuat kita membuat setiap kolam ke dalam kemahiran. Sebenarnya, kita membuat kemahiran kita menjadi sekuah yang memperkenalkan perangkatan untuk membuat kemahiran mereka dengan sebuah jenis projek yang mereka perlukan. Jadi, kita ada beberapa contoh pada bagaimana kita dapat membuat kemahiran menggunakan penyelidik. Tapi, pertama, kita akan menunjukkan kemahiran yang kita gunakan untuk kemahiran yang selanjutnya. Jadi, kita ada kemahiran utama yang mempunyai satu-satunya perangkatan untuk kemahiran ini. Jadi, okey. Jadi, di sini kita ada dua pilihan tersebut. Jadi, mari kita katakan kita perlu menunjukkan perangkat yang memperkenalkan, pertama, kemahiran utama, kemahiran utama, kemahiran utama terakhir, dan kemahiran utama. Jadi, apa yang perlu kita buat adalah membuat kemahiran itu ke dalam projek. Jadi, kita mulakan dengan pilihan. Kemudian kemahiran utama, kemahiran utama, kemahiran utama, dan juga menjemput kemahiran utama. Kemudian, anda akan menyebabkan kemahiran utama yang adalah objek utama. Kemudian, anda akan menuju ke kemahiran utama. Kemudian, akhirnya, anda menggunakan pilihan list untuk beritahu kemahiran apa yang akan diberikan dari set kemahiran. Jadi, di sini, anda akan mempunyai pilihan sekelipu yang lama, yang adalah pilihan ID, pilihan yang pertama, pilihan yang lain yang terakhir, dan pilihan yang terakhir, yang adalah Citi. Tapi, ini menakutkan anda perlu dikumpulkan ke dalam pilihan. Tapi, jika anda tidak mahu, anda boleh mempunyai kemahiran utama. Jadi, di sini, kita mempunyai kemahiran utama, mempunyai pilihan utama, dengan pilihan ID, pilihan pilihan utama, pilihan utama, dan Citi. Jadi, apa yang anda perlu lakukan adalah kemahiran tersebut untuk menggunakan posisi kemahiran tersebut dengan pilihan utama dan pilihan utama untuk menggunakan kemahiran utama ke dalam pilihan utama. Jadi, di sini, jika anda mempunyai lebih banyak pilihan utama, anda boleh menggunakan pilihan pilihan utama yang akan membawa kemahiran utama, dan anda boleh beritahu pada apa kemahiran anda mahu menggunakan kemahiran tersebut yang adalah kemahiran satu. Saya beritahu bahawa saya mahu menggunakan kemahiran untuk kemahiran yang lama dan kemahiran dua. Saya mahu menggunakan kemahiran tersebut dan jika anda mahu menggunakan pilihan utama, anda boleh menggunakan pilihan utama dan anda mahu mengenai pilihan utama dan saya mahu menggunakan kemahiran tersebut Jadi, di dalam contoh ini, kami mempunyai stabil pilihan utama yang seperti yang saya menunjukkan di dalam pilihan utama. Tapi di sini, kami mempercayai pilihan utama Jadi, apa yang penyelidik anda dapat membantu anda adalah kerana anda tahu kemahiran anda. Anda mengandung ke pilihan utama tapi anda hanya mengawal pilihan utama. Apa yang dapat anda lakukan adalah Anda dapat membuat pilihan jantung untuk anda dalam pilihan utama. Jadi, kami akan menunjukkan data kode kerana bagaimana ini berlaku. Eh jika anda dapat melihat di sini anda boleh lihat? Bukan tak apa. Jadi, anda dapat melihat di sini kami mempunyai pilihan utama yang adalah pilihan utama dan kami mempunyai tiga pilihan utama pilihan utama, pilihan utama dan kemudian ke satu-satunya taber, tapi kami tidak menghargai kawasan yang menghargai. Jadi jika kami akan menerima kawasan, kami akan menghargai kawasan ini. Maaf. Jadi, beri kami sekejap. Jadi, anda dapat lihat kawasan generasi ini. Ini hanya kawasan sekejap. Jadi, kami akan memilih projeksi anda. Jika anda tahu ini, anda dapat beri anda kawasan yang menghargai. Jadi, ini adalah sangat membantu untuk pembangunan kerana apa-apa pun yang anda katakan di kawasan kawasan kawasan, apabila kawasan generasi, anda dapat menghargai kawasan ini ke dalam kawasan sekejap. Dan menghargai kawasan ini jika ia tidak berfungsi untuk anda. Jadi, apa yang akan saya tunjukkan anda adalah menghargai kawasan dari kawasan kawasan anda. Tetapi juga, kami mempunyai kawasan lain yang kami gunakan. Untuk menerima, pertama dan pertama menggunakan yang hanya akan membawa kawasan pertama dari kawasan kawasan anda. Dan kawasan kawasan yang hanya menerima satu kawasan dari kawasan kawasan anda. Dan juga menunggu bahawa kawasan kawasan anda hanya mempunyai kawasan kawasan. Jika kawasan kawasan lebih daripada kawasan kawasan, keputusan akan dipercaya. Jadi, saya akan mengambil kawasan kawasan saya. Okey, teruskan. Kenapa kita perlu membuat kawasan kawasan kita sendiri? So, salah satu sebabnya, kami ingin kawasan kita menjadi kawasan kawasan kita. Jadi, dalam kawasan kita, saat kami membuat kawasan ini, kami ingin kawasan kita menjadi kecuali keperluan dan kelihatan seperti kawasan kita. Pada masa yang sama, kami ingin menjadi kecuali dan kelihatan yang mudah. Jadi, sebab itu, dengan kawasan ini, kami ingin semua kecuali kecuali untuk kawasan kita yang membuat, membuat, membuat, berabut dan beruntung maken keceboan dan mudah untuk mengejutkan. Oke. Jadi salah satu sarapan kesemua kerak tasty rice beda, menos ada satu kesemua yang sama seenedan latihan untuk kawasan mudah. Dilihat seseorang untuk melakukannya, ada desa yang mempunyai dan juga menambahkan auto-increment. Jadi setiap kali kita meletakkan rekod dalam tab DataBase, ia akan menghasilkan koi otomatisik. Kita akan menghasilkan koi. Jadi, fungsi ini akan menghasilkan koi itu dan menerimu koi yang menghasilkan. Dan kemudian jika anda ingin meletakkan lebih daripada satu rekod pada masa yang sama, kita mempunyai fungsi yang menghasilkan koi yang dapat melakukan itu. Jadi, bagi contoh, anda mempunyai 100 rekod yang anda ingin meletakkan pada satu koi. Kemudian ini mungkin tidak adalah cara yang paling optimis untuk meletakkan koi kerana ia akan menghasilkan koi yang menghasilkan koi. Jadi, itu sebabnya kita telah menghasilkan koi yang meletakkan, ia akan hanya meletakkan sepanjang 100 rekod dalam satu koi. Jadi, jika anda meletakkan pada contoh ini, kita mempunyai kebiasaan dalam kolam variable selain koi. Jadi, apa-apa perubahan yang kita lakukan dalam skima seperti, kita mempunyai pengalaman dalam skima kita, dan kemudian kita perlu menghasilkan atau menghasilkan kolam. Apabila kita meletakkan kebiasaan dalam koi dalam objek skima kita, ia akan menyerahkan dalam koi yang menghargainya. Apabila kita ingin meletakkan rekod, kita hanya perlu menggunakan koi objek, dan menghubungi fungsinya. Kemudian menghubungi kolam yang kita ingin meletakkan dan vali yang kita ingin meletakkan. Kemudian, koi objek yang kita ingin meletakkan adalah untuk mencubungi kebiasaan dalam koi yang kita ingin meletakkan. Selain koi yang kita ingin meletakkan dalam koi yang menghargainya, ia harus menjadi koi koi. Apabila kita menghubungi skala, salah satu koi yang kita benar-benar suka tentang koi koi adalah koi koi. Dan kita ingin menghargainya untuk membuat koi koi kita lebih baik dan membantu perniagaan mempunyai lebih banyak koi koi apabila kita mempunyai kebiasaan dalam koi kita. Satu kebiasaan yang kita ingin adalah kemungkinan untuk menghubungi koi koi untuk menghubungi dan meletakkan. Jika anda meletakkan di sini, kita mempunyai fungsinya yang menghubungi kolam yang kita ingin meletakkan dan menghubungi kolam yang adalah koi dan meletakkan. Tapi jika anda dapat melihat koi koi yang pertama, nama-nama dan jendera adalah menggunakan koi koi yang berlainan yang bermaksud ia menunggu koi koi yang berlainan. Sehingga dalam kolam, kita mempunyai kolam koi dan meletakkan koi yang adalah koi koi. Jadi, ia dapat membantu kami mengetahui bahawa dalam koi koi kita, kami menunggu koi dan kemudian pemeriksaan adalah menghubungi kolam koi. Jadi, satu alasan lain adalah kemungkinan untuk menghubungi koi untuk menghubungi koi. Apabila kita membuat berkongsi kompleks, ada kemungkinan yang pemeriksaan akan dapat tidak dapat melihat kemungkinan yang menghubungi kemungkinan kemungkinan dan kemungkinan kemungkinan yang kita menunggu. Jadi, kita mengetahui sebuah alasan yang akan membantu kami bahawa apabila kita memperkembangkannya kemungkinan ini, ia akan dapat memberitahu kami bahawa kemungkinan yang kita memperkembangkannya akan memperkembangkannya. Jadi, bagaimanapun, kita mempunyai kemungkinan yang sangat mudah yang adalah saya mempunyai alasan utama dan alasan pertama. Jadi, apa yang kita memperkembangkan alasan utama seharusnya adalah alasan utama dan alasan utama. Tetapi dalam alasan utama, kita menunggu alasan utama dan alasan utama. Jadi, apabila alasan utama digunakan, akan ada alasan kemungkinan dan kemungkinan akan memperkembangkannya. Dalam alasan tersebut, alasan tersebut memperkembangkannya kerana ia menunggu dan memperkembangkan alasan utama. Kemudian alasan utama menunggu alasan utama yang adalah alasan utama. Jadi, ini membantu kita memperkembangkan alasan utama lebih baik dan juga membahas kemungkinan alasan utama yang kita perlu mengubah. Jadi, itu semua. Jadi, kita telah berbincang tentang alasan utama. Apa kita, apa yang kita berkaitan dan apa yang kita ada, Why we built SQLView and how we built it. Dan apabila kita penubah, apabila kita penubah, kita dapat menghargai alasan utama lebih banyak kerana ia membuat kita membuat alasan utama yang lebih baik. Kita dapat memperkembangan alasan utama dalam kode kita kerana kita dapat kejadian bagaimana untuk membuat query SQL dalam perjalanan kita. Dan ia membuatkan perkembangan kita kerana ia hanya membutuhkan kita untuk fokus pada apa yang kita perlu lakukan dan juga untuk kita untuk fokus pada SQL mempelajari secara secara secara membutuhkan. Okey, jadi apa yang berikutnya kita adalah kita menarik untuk memenuhi schala tiga dan kita memasukkan untuk kita muncul untuk memperbaiki kacauan se denying kei dan kita ingin memperbaiki kekuatan kita lebih banyak. Satu-satunya tanya. Ya. Saya ada dua tanya. Berazurkan mana kita gunakan pement appearances untuk memperbaiki query? So you mean the select query? Okay. Can you show in the... Specifically, what if your parameter is calculated? It's not just a static string. Okay. So the first question is how do we do a wear clause and then what if the parameter is calculated? So when you say calculated, does it mean in the SQL side or in the Scala side? Let's say it's an IDE of entity that comes all the way from the user. Okay. I see a user address. Okay. So to do the wear clause is just have... Okay. So when you were creating a select... Just say about results you have while ID or what? While ID? So you're saying that it's a variable you want to pass in, right? So you string interpolation to a student? Yeah, I see. So now... Am I... Yeah. Right. Am I the only one seeing SQL injection here? Okay. So... Okay, so you're talking about... Are there any built-in protection in the library that prevents SQL injection like this? Yes. Okay. So for this select queries, this is converted into a prepared statement which will avoid SQL injection. We have tested it as well in our project. Yes. You mentioned that you wanted basic everything to be factor friendly. Yes. But I guess you're... When you're creating this relationship or table or whatever it is, you have some mechanism to create it in the database. Yes. So what if you add a new column? So how do you handle migrations? Okay. Take my migrations. So for adding of columns currently, we are doing it manually. So there's no... We don't support updating of columns like other persistent layer does. Okay. Yes. I like the type safety of your queries. This is pretty powerful. Why did you choose to automatically insert joints and queries that you lack then instead of actually compiling things that would be... I personally overfavor the validity of your queries and your ability making it explicit rather than here. It's in your drawing, right? Yes. In your left drawing and right drawing. So you make a choice. Okay. So auto join is just like one feature. It depends on the developer how they want to query their own select queries. So if they want to be fancy then they can do all the left joins, inner joins that they want. But if it's just a very simple query like you just have two tables that you want to join then you can use this but you have a choice to use it or not to use it. So there are other... Currently we only have join which is the inner join. Any questions? Yes. Does this depend on the style that you're using? Yes. My second question is do you support transactions? For example, in library like Slick you can mask two queries for loop and then the one field, the other one is go back. Okay. Currently we don't do that. So what we do is that we have a connection and then we just do all the queries there and then if it fails then it will throw an exception which is we usually wrap it into a try which we can do every recovery you want when the error is thrown. Okay. Any question? There's no open source. Okay. So currently it's not open source but we have plans to make it open source. Just that right now there are challenges that we foresee that make us choose a decision not to open source. So like maintenance. Yeah. Just Google for SQL view. But in SQL view you can do it on something in Singapore. So this name is taken. Okay. Okay. Any more questions? Any more? Usually like there are different people who handle the data response automatically. Right? So when you did the performance can you hear me? Eh. Yeah. When you did the performance sometime you are not the only one who tried to do optimization. There are some other people who are only familiar with SQL. My question is is there any tools internet tools that can cover from SQL or in fact through the your SQL view? So currently what we do is that when we create our SQL SQL scripts, select scripts we will just do it and like any other tools like Workbench and then when we do that we will just translate manually into a SQL view. Yes. Okay. Any other question? Okay. Next slide. Okay. So as we said we are from Green Fossil and then we are currently hiring. So if you are interested to join us contact us through this. Thank you. Thank you.